GNU Bison XML Automaton Report

input grammar: cplusplus.y

Table of Contents

Reductions

Nonterminals useless in grammar

Terminals unused in grammar

Rules useless in grammar

Conflicts

State 0 conflicts: 41 shift/reduce, 3 reduce/reduce State 2 conflicts: 39 shift/reduce, 3 reduce/reduce State 4 conflicts: 1 reduce/reduce State 10 conflicts: 1 shift/reduce State 22 conflicts: 3 shift/reduce, 1 reduce/reduce State 23 conflicts: 1 shift/reduce State 25 conflicts: 1 shift/reduce State 50 conflicts: 36 shift/reduce, 3 reduce/reduce State 51 conflicts: 8 shift/reduce, 5 reduce/reduce State 54 conflicts: 3 shift/reduce State 58 conflicts: 3 shift/reduce, 2 reduce/reduce State 59 conflicts: 3 shift/reduce State 61 conflicts: 40 shift/reduce, 3 reduce/reduce State 63 conflicts: 1 shift/reduce State 75 conflicts: 1 reduce/reduce State 89 conflicts: 1 shift/reduce, 1 reduce/reduce State 96 conflicts: 100 reduce/reduce State 101 conflicts: 39 shift/reduce, 3 reduce/reduce State 114 conflicts: 39 shift/reduce, 3 reduce/reduce State 116 conflicts: 61 reduce/reduce State 118 conflicts: 39 shift/reduce, 3 reduce/reduce State 119 conflicts: 5 shift/reduce, 1 reduce/reduce State 121 conflicts: 1 shift/reduce State 124 conflicts: 1 shift/reduce State 129 conflicts: 2 shift/reduce State 132 conflicts: 1 shift/reduce, 1 reduce/reduce State 134 conflicts: 2 shift/reduce State 135 conflicts: 40 shift/reduce, 3 reduce/reduce State 137 conflicts: 1 shift/reduce State 141 conflicts: 1 shift/reduce State 146 conflicts: 2 shift/reduce State 147 conflicts: 39 shift/reduce, 3 reduce/reduce State 152 conflicts: 3 shift/reduce State 158 conflicts: 3 shift/reduce State 167 conflicts: 2 shift/reduce State 168 conflicts: 3 shift/reduce State 171 conflicts: 1 shift/reduce, 1 reduce/reduce State 172 conflicts: 1 shift/reduce State 174 conflicts: 3 shift/reduce State 175 conflicts: 3 shift/reduce, 1 reduce/reduce State 177 conflicts: 1 shift/reduce State 178 conflicts: 1 shift/reduce State 179 conflicts: 1 reduce/reduce State 180 conflicts: 2 shift/reduce State 186 conflicts: 1 shift/reduce State 190 conflicts: 1 shift/reduce State 195 conflicts: 39 shift/reduce, 3 reduce/reduce State 198 conflicts: 1 shift/reduce State 200 conflicts: 100 reduce/reduce State 202 conflicts: 1 shift/reduce State 207 conflicts: 2 shift/reduce State 213 conflicts: 39 shift/reduce, 3 reduce/reduce State 218 conflicts: 39 shift/reduce, 3 reduce/reduce State 225 conflicts: 1 shift/reduce State 227 conflicts: 1 shift/reduce State 228 conflicts: 1 shift/reduce State 232 conflicts: 1 shift/reduce State 237 conflicts: 2 reduce/reduce State 244 conflicts: 2 shift/reduce State 246 conflicts: 1 shift/reduce State 247 conflicts: 2 shift/reduce State 248 conflicts: 2 shift/reduce State 251 conflicts: 2 shift/reduce State 252 conflicts: 2 shift/reduce State 253 conflicts: 2 shift/reduce State 260 conflicts: 2 shift/reduce State 261 conflicts: 2 shift/reduce State 263 conflicts: 2 shift/reduce State 281 conflicts: 2 shift/reduce State 282 conflicts: 1 shift/reduce State 284 conflicts: 1 shift/reduce State 286 conflicts: 1 shift/reduce, 1 reduce/reduce State 289 conflicts: 1 shift/reduce State 294 conflicts: 1 shift/reduce State 297 conflicts: 1 reduce/reduce State 304 conflicts: 2 shift/reduce State 319 conflicts: 1 shift/reduce State 325 conflicts: 1 shift/reduce State 326 conflicts: 1 shift/reduce State 327 conflicts: 2 shift/reduce State 328 conflicts: 1 shift/reduce State 330 conflicts: 2 shift/reduce State 333 conflicts: 2 shift/reduce State 334 conflicts: 4 shift/reduce State 337 conflicts: 1 shift/reduce State 344 conflicts: 1 shift/reduce State 347 conflicts: 2 shift/reduce State 356 conflicts: 5 shift/reduce, 2 reduce/reduce State 363 conflicts: 3 shift/reduce, 1 reduce/reduce State 377 conflicts: 2 shift/reduce State 378 conflicts: 2 shift/reduce State 379 conflicts: 2 shift/reduce State 386 conflicts: 3 shift/reduce State 393 conflicts: 1 shift/reduce State 397 conflicts: 1 shift/reduce State 402 conflicts: 2 shift/reduce State 405 conflicts: 3 shift/reduce State 407 conflicts: 3 reduce/reduce State 408 conflicts: 1 shift/reduce State 413 conflicts: 24 shift/reduce, 3 reduce/reduce State 414 conflicts: 2 shift/reduce, 1 reduce/reduce State 415 conflicts: 1 shift/reduce State 419 conflicts: 5 shift/reduce, 1 reduce/reduce State 422 conflicts: 2 shift/reduce State 423 conflicts: 1 shift/reduce State 424 conflicts: 5 shift/reduce, 1 reduce/reduce State 431 conflicts: 1 shift/reduce State 432 conflicts: 2 shift/reduce State 437 conflicts: 2 shift/reduce State 439 conflicts: 32 shift/reduce State 445 conflicts: 1 shift/reduce State 479 conflicts: 1 shift/reduce State 494 conflicts: 1 shift/reduce State 499 conflicts: 1 shift/reduce State 501 conflicts: 6 shift/reduce State 506 conflicts: 100 reduce/reduce State 511 conflicts: 2 shift/reduce State 512 conflicts: 2 shift/reduce State 513 conflicts: 2 shift/reduce State 514 conflicts: 2 shift/reduce State 515 conflicts: 2 shift/reduce State 519 conflicts: 2 shift/reduce State 521 conflicts: 2 shift/reduce State 524 conflicts: 2 shift/reduce State 525 conflicts: 1 shift/reduce State 526 conflicts: 2 shift/reduce State 527 conflicts: 2 shift/reduce State 528 conflicts: 2 shift/reduce State 529 conflicts: 2 shift/reduce State 530 conflicts: 2 shift/reduce State 531 conflicts: 2 shift/reduce State 532 conflicts: 2 shift/reduce State 533 conflicts: 2 shift/reduce State 535 conflicts: 2 shift/reduce State 537 conflicts: 5 shift/reduce, 1 reduce/reduce State 542 conflicts: 2 shift/reduce State 543 conflicts: 2 shift/reduce State 555 conflicts: 2 shift/reduce State 556 conflicts: 2 shift/reduce State 557 conflicts: 2 shift/reduce State 558 conflicts: 2 shift/reduce State 559 conflicts: 2 shift/reduce State 560 conflicts: 2 shift/reduce State 562 conflicts: 2 shift/reduce State 563 conflicts: 2 shift/reduce State 564 conflicts: 2 shift/reduce State 565 conflicts: 2 shift/reduce State 566 conflicts: 2 shift/reduce State 571 conflicts: 2 shift/reduce State 572 conflicts: 2 shift/reduce State 573 conflicts: 2 shift/reduce State 574 conflicts: 2 shift/reduce State 575 conflicts: 2 shift/reduce State 576 conflicts: 2 shift/reduce State 577 conflicts: 2 shift/reduce State 579 conflicts: 2 shift/reduce State 595 conflicts: 39 shift/reduce, 3 reduce/reduce State 607 conflicts: 2 shift/reduce State 617 conflicts: 4 shift/reduce State 624 conflicts: 2 shift/reduce State 626 conflicts: 3 shift/reduce, 1 reduce/reduce State 627 conflicts: 3 shift/reduce State 628 conflicts: 1 shift/reduce State 631 conflicts: 1 shift/reduce State 637 conflicts: 2 reduce/reduce State 640 conflicts: 1 shift/reduce State 653 conflicts: 2 shift/reduce State 654 conflicts: 1 shift/reduce State 659 conflicts: 2 shift/reduce State 662 conflicts: 2 shift/reduce State 674 conflicts: 2 shift/reduce State 675 conflicts: 1 shift/reduce State 677 conflicts: 2 shift/reduce State 679 conflicts: 2 shift/reduce State 682 conflicts: 1 shift/reduce State 686 conflicts: 1 reduce/reduce State 688 conflicts: 1 shift/reduce State 690 conflicts: 2 shift/reduce, 1 reduce/reduce State 693 conflicts: 5 shift/reduce State 700 conflicts: 2 shift/reduce State 702 conflicts: 2 shift/reduce State 704 conflicts: 3 shift/reduce, 2 reduce/reduce State 705 conflicts: 1 shift/reduce State 740 conflicts: 2 shift/reduce State 743 conflicts: 2 shift/reduce State 749 conflicts: 1 shift/reduce State 750 conflicts: 1 shift/reduce State 756 conflicts: 2 shift/reduce State 757 conflicts: 100 reduce/reduce State 761 conflicts: 6 shift/reduce State 763 conflicts: 2 shift/reduce State 774 conflicts: 2 shift/reduce State 776 conflicts: 2 shift/reduce State 778 conflicts: 2 shift/reduce State 783 conflicts: 1 shift/reduce State 784 conflicts: 1 shift/reduce State 790 conflicts: 1 shift/reduce State 793 conflicts: 37 shift/reduce, 3 reduce/reduce State 803 conflicts: 1 reduce/reduce State 804 conflicts: 1 shift/reduce State 822 conflicts: 1 reduce/reduce State 828 conflicts: 39 shift/reduce, 3 reduce/reduce State 848 conflicts: 1 shift/reduce State 863 conflicts: 1 reduce/reduce State 865 conflicts: 2 shift/reduce, 2 reduce/reduce State 874 conflicts: 1 shift/reduce, 1 reduce/reduce State 881 conflicts: 2 shift/reduce State 886 conflicts: 2 shift/reduce State 906 conflicts: 1 shift/reduce State 907 conflicts: 2 shift/reduce State 909 conflicts: 2 shift/reduce State 916 conflicts: 4 shift/reduce State 919 conflicts: 5 shift/reduce State 925 conflicts: 1 shift/reduce State 935 conflicts: 1 shift/reduce State 943 conflicts: 1 shift/reduce State 944 conflicts: 2 shift/reduce State 945 conflicts: 2 shift/reduce State 950 conflicts: 2 shift/reduce State 962 conflicts: 2 shift/reduce State 964 conflicts: 2 shift/reduce State 965 conflicts: 1 shift/reduce State 966 conflicts: 3 shift/reduce State 967 conflicts: 2 shift/reduce State 969 conflicts: 2 shift/reduce State 972 conflicts: 36 shift/reduce, 3 reduce/reduce State 973 conflicts: 2 shift/reduce State 978 conflicts: 37 shift/reduce, 3 reduce/reduce State 981 conflicts: 2 shift/reduce State 989 conflicts: 39 shift/reduce, 3 reduce/reduce State 1009 conflicts: 1 reduce/reduce State 1019 conflicts: 1 shift/reduce State 1025 conflicts: 3 shift/reduce State 1028 conflicts: 1 shift/reduce State 1030 conflicts: 1 shift/reduce State 1031 conflicts: 1 shift/reduce State 1039 conflicts: 1 shift/reduce State 1051 conflicts: 4 shift/reduce State 1052 conflicts: 2 shift/reduce State 1053 conflicts: 2 shift/reduce State 1057 conflicts: 2 shift/reduce State 1060 conflicts: 1 shift/reduce, 1 reduce/reduce State 1063 conflicts: 27 shift/reduce, 3 reduce/reduce State 1068 conflicts: 2 shift/reduce State 1069 conflicts: 2 shift/reduce State 1070 conflicts: 2 shift/reduce State 1071 conflicts: 2 shift/reduce State 1076 conflicts: 2 shift/reduce State 1080 conflicts: 2 shift/reduce State 1084 conflicts: 3 shift/reduce State 1086 conflicts: 2 shift/reduce State 1091 conflicts: 2 reduce/reduce State 1092 conflicts: 1 shift/reduce State 1093 conflicts: 2 shift/reduce State 1097 conflicts: 37 shift/reduce, 3 reduce/reduce State 1101 conflicts: 2 shift/reduce State 1103 conflicts: 2 shift/reduce State 1138 conflicts: 2 shift/reduce State 1140 conflicts: 1 shift/reduce State 1143 conflicts: 2 shift/reduce State 1147 conflicts: 1 shift/reduce, 2 reduce/reduce State 1156 conflicts: 39 shift/reduce, 3 reduce/reduce State 1169 conflicts: 1 shift/reduce State 1172 conflicts: 2 shift/reduce State 1177 conflicts: 37 shift/reduce, 3 reduce/reduce State 1182 conflicts: 37 shift/reduce, 3 reduce/reduce State 1184 conflicts: 19 shift/reduce, 3 reduce/reduce State 1186 conflicts: 37 shift/reduce, 39 reduce/reduce State 1196 conflicts: 62 shift/reduce, 41 reduce/reduce State 1218 conflicts: 1 shift/reduce State 1219 conflicts: 1 shift/reduce State 1237 conflicts: 2 shift/reduce State 1243 conflicts: 2 shift/reduce State 1245 conflicts: 19 shift/reduce, 39 reduce/reduce State 1250 conflicts: 37 shift/reduce, 3 reduce/reduce State 1251 conflicts: 62 shift/reduce, 41 reduce/reduce State 1254 conflicts: 19 shift/reduce, 3 reduce/reduce State 1263 conflicts: 1 shift/reduce State 1266 conflicts: 1 shift/reduce State 1269 conflicts: 1 shift/reduce State 1271 conflicts: 3 shift/reduce State 1272 conflicts: 37 shift/reduce, 3 reduce/reduce State 1273 conflicts: 2 shift/reduce State 1276 conflicts: 2 shift/reduce State 1279 conflicts: 19 shift/reduce, 3 reduce/reduce State 1280 conflicts: 1 shift/reduce State 1283 conflicts: 2 shift/reduce State 1287 conflicts: 1 shift/reduce State 1291 conflicts: 2 shift/reduce State 1292 conflicts: 3 shift/reduce State 1293 conflicts: 2 shift/reduce State 1295 conflicts: 37 shift/reduce, 3 reduce/reduce State 1296 conflicts: 37 shift/reduce, 3 reduce/reduce State 1297 conflicts: 4 shift/reduce State 1302 conflicts: 1 reduce/reduce State 1303 conflicts: 1 reduce/reduce State 1308 conflicts: 37 shift/reduce, 3 reduce/reduce State 1315 conflicts: 37 shift/reduce, 3 reduce/reduce State 1317 conflicts: 37 shift/reduce, 3 reduce/reduce State 1318 conflicts: 1 shift/reduce State 1322 conflicts: 37 shift/reduce, 3 reduce/reduce

Grammar

0 $accepttranslation-unit $end 1 COMMA-opt → %empty 2 | "," 3 CONSTEXPR-opt → %empty 4 | "constexpr" 5 ELLIPSIS-opt → %empty 6 | "..." 7 EXPORT-opt → %empty 8 | "export" 9 EXTERN-opt → %empty 10 | "extern" 11 IDENTIFIER-opt → %empty 12 | IDENTIFIER 13 INLINE-opt → %empty 14 | "inline" 15 NOEXCEPT-opt → %empty 16 | "noexcept" 17 NOT-opt → %empty 18 | "!" 19 SCOPE-opt → %empty 20 | "::" 21 TEMPLATE-opt → %empty 22 | "template" 23 THIS-opt → %empty 24 | "this" 25 TYPENAME-opt → %empty 26 | "typename" 27 VIRTUAL-opt → %empty 28 | "virtual" 29 abstract-declaratorptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt → %empty 33 | abstract-declarator 34 abstract-pack-declaratornoptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 36 access-specifier"private" 37 | "protected" 38 | "public" 39 access-specifier-opt → %empty 40 | access-specifier 41 additive-expressionmultiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expressionequality-expression 48 | and-expression "&" equality-expression 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 50 assignment-expressionconditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt → %empty 55 | assignment-expression 56 assignment-operator"=" 57 | "*=" 58 | "/=" 59 | "%=" 60 | "+=" 61 | "-=" 62 | ">>=" 63 | "<<=" 64 | "&=" 65 | "^=" 66 | "|=" 67 attributeattribute-token attribute-argument-clause-opt 68 attribute-argument-clause"(" balanced-token-seq-opt ")" 69 attribute-argument-clause-opt → %empty 70 | attribute-argument-clause 71 attribute-declarationattribute-specifier-seq ";" 72 attribute-listattribute-opt 73 | attribute-list "," attribute-opt 74 | attribute "..." 75 | attribute-list "," attribute "..." 76 attribute-namespaceIDENTIFIER 77 attribute-opt → %empty 78 | attribute 79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → %empty 84 | attribute-specifier-seq 85 attribute-tokenIDENTIFIER 86 | attribute-scoped-token 87 attribute-using-prefix"using" attribute-namespace ":" 88 attribute-using-prefix-opt → %empty 89 | attribute-using-prefix 90 await-expression"co_await" cast-expression 91 balanced-token"(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seqbalanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt → %empty 98 | balanced-token-seq 99 base-clause":" base-specifier-list 100 base-clause-opt → %empty 101 | base-clause 102 base-specifierattribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-listbase-specifier ELLIPSIS-opt 106 | base-specifier-list "," base-specifier ELLIPSIS-opt 107 block-declarationsimple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 116 brace-or-equal-initializer"=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt → %empty 119 | brace-or-equal-initializer 120 braced-init-list"{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 123 capturesimple-capture 124 | init-capture 125 capture-default"&" 126 | "=" 127 capture-listcapture 128 | capture-list "," capture 129 cast-expressionunary-expression 130 | "(" type-id ")" cast-expression 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 133 class-head-namenested-name-specifier-opt class-name 134 class-key"class" 135 | "struct" 136 | "union" 137 class-nameIDENTIFIER 138 | simple-template-id 139 class-or-decltypenested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 142 class-specifierclass-head "{" member-specification-opt "}" 143 class-virt-specifier"final" 144 class-virt-specifier-opt → %empty 145 | class-virt-specifier 146 compare-expressionshift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 149 compound-statement"{" statement-seq-opt "}" 150 concept-definition"concept" concept-name "=" constraint-expression ";" 151 concept-nameIDENTIFIER 152 conditionexpression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 154 condition-opt → %empty 155 | condition 156 conditional-expressionlogical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expressionconditional-expression 159 constant-expression-opt → %empty 160 | constant-expression 161 constraint-expressionlogical-or-expression 162 constraint-logical-and-expressionprimary-expression 163 | constraint-logical-and-expression "&&" primary-expression 164 constraint-logical-or-expressionconstraint-logical-and-expression 165 | constraint-logical-or-expression "||" constraint-logical-and-expression 166 conversion-declaratorptr-operator conversion-declarator-opt 167 conversion-declarator-opt → %empty 168 | conversion-declarator 169 conversion-function-id"operator" conversion-type-id 170 conversion-type-idtype-specifier-seq conversion-declarator-opt 171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" 172 ctor-initializer":" mem-initializer-list 173 ctor-initializer-opt → %empty 174 | ctor-initializer 175 cv-qualifier"const" 176 | "volatile" 177 cv-qualifier-seqcv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → %empty 179 | cv-qualifier-seq 180 decl-specifierstorage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seqdecl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → %empty 192 | decl-specifier-seq 193 declarationblock-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seqdeclaration 207 | declaration-seq declaration 208 declaration-seq-opt → %empty 209 | declaration-seq 210 declaration-statementblock-declaration 211 declaratorptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-idELLIPSIS-opt id-expression 214 decltype-specifier"decltype" "(" expression ")" 215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 216 defining-type-iddefining-type-specifier-seq abstract-declarator-opt 217 defining-type-specifiertype-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seqdefining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 222 delete-expressionSCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 224 designated-initializer-clausedesignator brace-or-equal-initializer 225 designated-initializer-listdesignated-initializer-clause 226 | designated-initializer-list "," designated-initializer-clause 227 designator"." IDENTIFIER 228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration";" 234 enclosing-namespace-specifierIDENTIFIER 235 | enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 236 enum-base":" type-specifier-seq 237 enum-base-opt → %empty 238 | enum-base 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-namenested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt → %empty 242 | enum-head-name 243 enum-key"enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-nameIDENTIFIER 247 enum-specifierenum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 249 enumeratorIDENTIFIER attribute-specifier-seq-opt 250 enumerator-definitionenumerator 251 | enumerator "=" constant-expression 252 enumerator-listenumerator-definition 253 | enumerator-list "," enumerator-definition 254 enumerator-list-opt → %empty 255 | enumerator-list 256 equality-expressionrelational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 261 | "..." 262 exclusive-or-expressionand-expression 263 | exclusive-or-expression "^" and-expression 264 explicit-instantiationEXTERN-opt "template" declaration 265 explicit-specialization"template" "<" ">" declaration 266 explicit-specifier"explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt → %empty 269 | explicit-specifier 270 export-declaration"export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 273 expr-or-braced-init-listexpression 274 | braced-init-list 275 expr-or-braced-init-list-opt → %empty 276 | expr-or-braced-init-list 277 expressionassignment-expression 278 | expression "," assignment-expression 279 expression-listinitializer-list 280 expression-list-opt → %empty 281 | expression-list 282 expression-opt → %empty 283 | expression 284 expression-statementexpression-opt ";" 285 fold-expression"(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 288 fold-operator"+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" 320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 322 for-range-initializerexpr-or-braced-init-list 323 function-bodyctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier"virtual" 330 | explicit-specifier 331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq 332 global-module-fragment"module" ";" declaration-seq-opt 333 global-module-fragment-opt → %empty 334 | global-module-fragment 335 handler"catch" "(" exception-declaration ")" compound-statement 336 handler-seqhandler handler-seq-opt 337 handler-seq-opt → %empty 338 | handler-seq 339 header-nameHEADER_NAME 340 id-expressionunqualified-id 341 | qualified-id 342 identifier-listIDENTIFIER 343 | identifier-list "," IDENTIFIER 344 inclusive-or-expressionexclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 346 init-captureELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 348 init-declaratordeclarator initializer-opt 349 | declarator requires-clause 350 init-declarator-listinit-declarator 351 | init-declarator-list "," init-declarator 352 init-declarator-list-opt → %empty 353 | init-declarator-list 354 init-statementexpression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt → %empty 358 | init-statement 359 initializerbrace-or-equal-initializer 360 | "(" expression-list ")" 361 initializer-clauseassignment-expression 362 | braced-init-list 363 initializer-listinitializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 365 initializer-opt → %empty 366 | initializer 367 iteration-statement"while" "(" condition ")" statement 368 | "do" statement "while" "(" expression ")" ";" 369 | "for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 371 jump-statement"break" ";" 372 | "continue" ";" 373 | "return" expr-or-braced-init-list-opt ";" 374 | coroutine-return-statement 375 | "goto" IDENTIFIER ";" 376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 379 lambda-capturecapture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt → %empty 383 | lambda-capture 384 lambda-declaratorlambda-specifiers 385 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 386 lambda-expressionlambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer"[" lambda-capture-opt "]" 389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 392 literal-operator-id"operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expressioninclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expressionlogical-and-expression 397 | logical-or-expression "||" logical-and-expression 398 mem-initializermem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list 400 mem-initializer-idclass-or-decltype 401 | IDENTIFIER 402 mem-initializer-listmem-initializer ELLIPSIS-opt 403 | mem-initializer-list "," mem-initializer ELLIPSIS-opt 404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 419 member-declarator-listmember-declarator 420 | member-declarator-list "," member-declarator 421 member-declarator-list-opt → %empty 422 | member-declarator-list 423 member-specificationmember-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt → %empty 426 | member-specification 427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 431 module-namemodule-name-qualifier-opt IDENTIFIER 432 module-name-qualifierIDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt → %empty 435 | module-name-qualifier 436 module-partition":" module-name-qualifier-opt IDENTIFIER 437 module-partition-opt → %empty 438 | module-partition 439 multiplicative-expressionpm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-aliasIDENTIFIER 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-bodydeclaration-seq-opt 447 namespace-definitionnamed-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-nameIDENTIFIER 451 | namespace-alias 452 nested-name-specifier"::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt → %empty 459 | nested-name-specifier 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 461 nested-requirement"requires" constraint-expression ";" 462 new-declaratorptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt → %empty 465 | new-declarator 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 468 new-initializer"(" expression-list-opt ")" 469 | braced-init-list 470 new-initializer-opt → %empty 471 | new-initializer 472 new-placement"(" expression-list ")" 473 new-placement-opt → %empty 474 | new-placement 475 new-type-idtype-specifier-seq new-declarator-opt 476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" 477 noexcept-expression"noexcept" "(" expression ")" 478 noexcept-specifier"noexcept" "(" constant-expression ")" 479 | "noexcept" 480 noexcept-specifier-opt → %empty 481 | noexcept-specifier 482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt → %empty 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declaratordeclarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt 495 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 497 operator-function-id"operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 499 overloadable-operator"new" 500 | "delete" 501 | "new" "[" "]" 502 | "delete" "[" "]" 503 | "co_await" 504 | "(" ")" 505 | "[" "]" 506 | "->" 507 | "->*" 508 | "~" 509 | "!" 510 | "+" 511 | "-" 512 | "*" 513 | "/" 514 | "%" 515 | "^" 516 | "&" 517 | "|" 518 | "=" 519 | "+=" 520 | "-=" 521 | "*=" 522 | "/=" 523 | "%=" 524 | "^=" 525 | "&=" 526 | "|=" 527 | "==" 528 | "!=" 529 | "<" 530 | ">" 531 | "<=" 532 | ">=" 533 | "<=>" 534 | "&&" 535 | "||" 536 | "<<" 537 | ">>" 538 | "<<=" 539 | ">>=" 540 | "++" 541 | "--" 542 | "," 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-listparameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt → %empty 552 | parameter-declaration-list 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 554 placeholder-type-specifiertype-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expressioncast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expressionprimary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression"literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt 585 private-module-fragment-opt → %empty 586 | private-module-fragment 587 ptr-abstract-declaratornoptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt → %empty 590 | ptr-abstract-declarator 591 ptr-declaratornoptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 597 pure-specifier"=" '0' 598 pure-specifier-opt → %empty 599 | pure-specifier 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 601 qualified-namespace-specifiernested-name-specifier-opt namespace-name 602 ref-qualifier"&" 603 | "&&" 604 ref-qualifier-opt → %empty 605 | ref-qualifier 606 relational-expressioncompare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 611 requirementsimple-requirement 612 | type-requirement 613 | compound-requirement 614 | nested-requirement 615 requirement-body"{" requirement-seq "}" 616 requirement-parameter-list"(" parameter-declaration-clause ")" 617 requirement-parameter-list-opt → %empty 618 | requirement-parameter-list 619 requirement-seqrequirement 620 | requirement-seq requirement 621 requires-clause"requires" constraint-logical-or-expression 622 requires-clause-opt → %empty 623 | requires-clause 624 requires-expression"requires" requirement-parameter-list-opt requirement-body 625 return-type-requirement"->" type-constraint 626 return-type-requirement-opt → %empty 627 | return-type-requirement 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 630 | "if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement 632 | "switch" "(" init-statement-opt condition ")" statement 633 shift-expressionadditive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 636 simple-captureIDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" 640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 643 simple-requirementexpression ";" 644 simple-template-idtemplate-name "<" template-argument-list-opt ">" 645 simple-type-specifiernested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statementlabeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 672 statement-seqstatement 673 | statement-seq statement 674 statement-seq-opt → %empty 675 | statement-seq 676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier"static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literalSTRING_LITERAL 683 template-argumentconstant-expression 684 | type-id 685 | id-expression 686 template-argument-listtemplate-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt → %empty 689 | template-argument-list 690 template-declarationtemplate-head declaration 691 | template-head concept-definition 692 template-head"template" "<" template-parameter-list ">" requires-clause-opt 693 template-idsimple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-nameIDENTIFIER 697 template-parametertype-parameter 698 | parameter-declaration 699 template-parameter-listtemplate-parameter 700 | template-parameter-list "," template-parameter 701 throw-expression"throw" assignment-expression-opt 702 trailing-return-type"->" type-id 703 trailing-return-type-opt → %empty 704 | trailing-return-type 705 translation-unitdeclaration-seq-opt 706 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 707 try-block"try" compound-statement handler-seq 708 type-constraintnested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt → %empty 711 | type-constraint 712 type-idtype-specifier-seq abstract-declarator-opt 713 type-nameclass-name 714 | enum-name 715 | typedef-name 716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key"class" 723 | "typename" 724 type-requirement"typename" nested-name-specifier-opt type-name ";" 725 type-specifiersimple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seqtype-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-nameIDENTIFIER 732 | simple-template-id 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 735 ud-suffixIDENTIFIER 736 unary-expressionpostfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator"*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 755 unqualified-idIDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 762 user-defined-string-literalstring-literal ud-suffix 763 using-declaration"using" using-declarator-list ";" 764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id 765 using-declarator-listusing-declarator ELLIPSIS-opt 766 | using-declarator-list "," using-declarator ELLIPSIS-opt 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration"using" elaborated-enum-specifier ";" 769 virt-specifier"override" 770 | "final" 771 virt-specifier-seqvirt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt → %empty 774 | virt-specifier-seq 775 yield-expression"co_yield" assignment-expression 776 | "co_yield" braced-init-list

Terminals, with rules where they appear

Nonterminals, with rules where they appear

Automaton

State 0

0 $accept translation-unit $end 9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty [$end] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 332 global-module-fragment "module" ";" declaration-seq-opt 333 global-module-fragment-opt %empty ["export", "module"] 334 | global-module-fragment 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 705 translation-unit declaration-seq-opt 706 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "module" shift, and go to state 24 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 333 (global-module-fragment-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" [reduce using rule 333 (global-module-fragment-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 62 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 global-module-fragment go to state 80 global-module-fragment-opt go to state 81 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 translation-unit go to state 103 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1

185 decl-specifier"constexpr" $default reduce using rule 185 (decl-specifier)

State 2

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 270 | "export" declaration 271 | "export" "{" declaration-seq-opt "}" 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "{" shift, and go to state 114 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 115 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 116 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 3

10 EXTERN-opt"extern" ["template"] 390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 680 storage-class-specifier"extern" ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 682 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 117 "template" reduce using rule 10 (EXTERN-opt) $default reduce using rule 680 (storage-class-specifier) string-literal go to state 118

State 4

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) $default reduce using rule 137 (class-name)

State 5

14 INLINE-opt"inline" ["namespace"] 188 decl-specifier"inline" ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "namespace" reduce using rule 14 (INLINE-opt) $default reduce using rule 188 (decl-specifier)

State 6

452 nested-name-specifier"::" $default reduce using rule 452 (nested-name-specifier)

State 7

265 explicit-specialization"template" "<" ">" declaration 692 template-head"template" "<" template-parameter-list ">" requires-clause-opt "<" shift, and go to state 119

State 8

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 121 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 9

329 function-specifier"virtual" $default reduce using rule 329 (function-specifier)

State 10

25 TYPENAME-opt %empty [IDENTIFIER, "::", "decltype"] 26 | "typename" 44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 763 using-declaration"using" using-declarator-list ";" 764 using-declarator TYPENAME-opt nested-name-specifier unqualified-id 765 using-declarator-list using-declarator ELLIPSIS-opt 766 | using-declarator-list "," using-declarator ELLIPSIS-opt 768 using-enum-declaration"using" elaborated-enum-specifier ";" IDENTIFIER shift, and go to state 122 "typename" shift, and go to state 123 "enum" shift, and go to state 124 IDENTIFIER [reduce using rule 25 (TYPENAME-opt)] $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 125 elaborated-enum-specifier go to state 126 using-declarator go to state 127 using-declarator-list go to state 128

State 11

233 empty-declaration";" $default reduce using rule 233 (empty-declaration)

State 12

134 class-key"class" $default reduce using rule 134 (class-key)

State 13

135 class-key"struct" $default reduce using rule 135 (class-key)

State 14

136 class-key"union" $default reduce using rule 136 (class-key)

State 15

175 cv-qualifier"const" $default reduce using rule 175 (cv-qualifier)

State 16

176 cv-qualifier"volatile" $default reduce using rule 176 (cv-qualifier)

State 17

183 decl-specifier"friend" $default reduce using rule 183 (decl-specifier)

State 18

184 decl-specifier"typedef" $default reduce using rule 184 (decl-specifier)

State 19

186 decl-specifier"consteval" $default reduce using rule 186 (decl-specifier)

State 20

187 decl-specifier"constinit" $default reduce using rule 187 (decl-specifier)

State 21

214 decltype-specifier"decltype" "(" expression ")" "(" shift, and go to state 129

State 22

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 243 enum-key"enum" [IDENTIFIER, "::", "alignas", "[", ":", "{", "decltype"] 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "class" shift, and go to state 130 "struct" shift, and go to state 131 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 243 (enum-key)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 243 (enum-key)] "decltype" [reduce using rule 243 (enum-key)] $default reduce using rule 243 (enum-key) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 133 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 23

266 explicit-specifier"explicit" "(" constant-expression ")" 267 | "explicit" [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", ">", "explicit", "*", "requires", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 134 "(" [reduce using rule 267 (explicit-specifier)] $default reduce using rule 267 (explicit-specifier)

State 24

332 global-module-fragment"module" ";" declaration-seq-opt ";" shift, and go to state 135

State 25

339 header-name HEADER_NAME 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 431 module-name module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier IDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt %empty [IDENTIFIER] 435 | module-name-qualifier 436 module-partition ":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 136 ":" shift, and go to state 137 HEADER_NAME shift, and go to state 138 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] header-name go to state 139 module-name go to state 140 module-name-qualifier go to state 141 module-name-qualifier-opt go to state 142 module-partition go to state 143

State 26

234 enclosing-namespace-specifier IDENTIFIER 235 | enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" IDENTIFIER shift, and go to state 144 enclosing-namespace-specifier go to state 145

State 27

650 simple-type-specifier"char" $default reduce using rule 650 (simple-type-specifier)

State 28

651 simple-type-specifier"char8_t" $default reduce using rule 651 (simple-type-specifier)

State 29

652 simple-type-specifier"char16_t" $default reduce using rule 652 (simple-type-specifier)

State 30

653 simple-type-specifier"char32_t" $default reduce using rule 653 (simple-type-specifier)

State 31

654 simple-type-specifier"wchar_t" $default reduce using rule 654 (simple-type-specifier)

State 32

655 simple-type-specifier"bool" $default reduce using rule 655 (simple-type-specifier)

State 33

656 simple-type-specifier"short" $default reduce using rule 656 (simple-type-specifier)

State 34

657 simple-type-specifier"int" $default reduce using rule 657 (simple-type-specifier)

State 35

658 simple-type-specifier"long" $default reduce using rule 658 (simple-type-specifier)

State 36

659 simple-type-specifier"signed" $default reduce using rule 659 (simple-type-specifier)

State 37

660 simple-type-specifier"unsigned" $default reduce using rule 660 (simple-type-specifier)

State 38

661 simple-type-specifier"float" $default reduce using rule 661 (simple-type-specifier)

State 39

662 simple-type-specifier"double" $default reduce using rule 662 (simple-type-specifier)

State 40

663 simple-type-specifier"void" $default reduce using rule 663 (simple-type-specifier)

State 41

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" "(" shift, and go to state 146

State 42

678 storage-class-specifier"static" $default reduce using rule 678 (storage-class-specifier)

State 43

679 storage-class-specifier"thread_local" $default reduce using rule 679 (storage-class-specifier)

State 44

681 storage-class-specifier"mutable" $default reduce using rule 681 (storage-class-specifier)

State 45

264 explicit-instantiationEXTERN-opt "template" declaration "template" shift, and go to state 147

State 46

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" "namespace" shift, and go to state 148

State 47

114 block-declarationalias-declaration $default reduce using rule 114 (block-declaration)

State 48

108 block-declarationasm-declaration $default reduce using rule 108 (block-declaration)

State 49

204 declarationattribute-declaration $default reduce using rule 204 (declaration)

State 50

71 attribute-declarationattribute-specifier-seq ";" 84 attribute-specifier-seq-optattribute-specifier-seq ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 ";" shift, and go to state 151 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 84 (attribute-specifier-seq-opt)] "extern" [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 84 (attribute-specifier-seq-opt)] "::" [reduce using rule 84 (attribute-specifier-seq-opt)] "typename" [reduce using rule 84 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 84 (attribute-specifier-seq-opt)] "class" [reduce using rule 84 (attribute-specifier-seq-opt)] "struct" [reduce using rule 84 (attribute-specifier-seq-opt)] "union" [reduce using rule 84 (attribute-specifier-seq-opt)] "const" [reduce using rule 84 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 84 (attribute-specifier-seq-opt)] "friend" [reduce using rule 84 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 84 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 84 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 84 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 84 (attribute-specifier-seq-opt)] "auto" reduce using rule 84 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 84 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "bool" [reduce using rule 84 (attribute-specifier-seq-opt)] "short" [reduce using rule 84 (attribute-specifier-seq-opt)] "int" [reduce using rule 84 (attribute-specifier-seq-opt)] "long" [reduce using rule 84 (attribute-specifier-seq-opt)] "signed" [reduce using rule 84 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 84 (attribute-specifier-seq-opt)] "float" [reduce using rule 84 (attribute-specifier-seq-opt)] "double" [reduce using rule 84 (attribute-specifier-seq-opt)] "void" [reduce using rule 84 (attribute-specifier-seq-opt)] "static" [reduce using rule 84 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 84 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 152 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 51

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "(", "&", "&&", "operator", "decltype", "*", "~"] 192 | decl-specifier-seq 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" "constexpr" shift, and go to state 1 "..." shift, and go to state 155 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 156 "alignas" shift, and go to state 157 "(" shift, and go to state 158 "&" shift, and go to state 159 "asm" shift, and go to state 160 "[" shift, and go to state 161 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "&&" shift, and go to state 162 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 163 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "..." [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] IDENTIFIER [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 191 (decl-specifier-seq-opt)] "(" [reduce using rule 191 (decl-specifier-seq-opt)] "&" [reduce using rule 191 (decl-specifier-seq-opt)] "&&" [reduce using rule 191 (decl-specifier-seq-opt)] "operator" reduce using rule 5 (ELLIPSIS-opt) "operator" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "*" [reduce using rule 191 (decl-specifier-seq-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) "~" [reduce using rule 191 (decl-specifier-seq-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 167 decl-specifier-seq-opt go to state 168 declarator go to state 169 declarator-id go to state 170 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 171 nested-name-specifier-opt go to state 90 noptr-declarator go to state 172 placeholder-type-specifier go to state 94 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 52

193 declarationblock-declaration $default reduce using rule 193 (declaration)

State 53

142 class-specifierclass-head "{" member-specification-opt "}" "{" shift, and go to state 175

State 54

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "alignas", "[", ":", "{", "decltype"] 84 | attribute-specifier-seq 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 177 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 178 simple-template-id go to state 179 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 55

713 type-nameclass-name $default reduce using rule 713 (type-name)

State 56

218 defining-type-specifierclass-specifier $default reduce using rule 218 (defining-type-specifier)

State 57

728 type-specifiercv-qualifier $default reduce using rule 728 (type-specifier)

State 58

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [",", "...", IDENTIFIER, "noexcept", "::", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "&&", "operator", "decltype", "->", ">", "*", "requires", "~"] 84 | attribute-specifier-seq 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 189 | decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 180 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 181 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 59

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 348 init-declarator declarator initializer-opt 349 | declarator requires-clause 350 init-declarator-list init-declarator 351 | init-declarator-list "," init-declarator 352 init-declarator-list-opt %empty [";"] 353 | init-declarator-list 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] ";" reduce using rule 352 (init-declarator-list-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 182 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 init-declarator go to state 183 init-declarator-list go to state 184 init-declarator-list-opt go to state 185 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 60

206 declaration-seqdeclaration $default reduce using rule 206 (declaration-seq)

State 61

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 207 declaration-seqdeclaration-seq declaration 209 declaration-seq-optdeclaration-seq [$end, "export", "}", "module"] 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 209 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 209 (declaration-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 209 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 209 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 187 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 62

705 translation-unitdeclaration-seq-opt $default reduce using rule 705 (translation-unit)

State 63

455 nested-name-specifierdecltype-specifier "::" 647 simple-type-specifierdecltype-specifier [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 188 "::" [reduce using rule 647 (simple-type-specifier)] $default reduce using rule 647 (simple-type-specifier)

State 64

197 declarationdeduction-guide $default reduce using rule 197 (declaration)

State 65

181 decl-specifierdefining-type-specifier $default reduce using rule 181 (decl-specifier)

State 66

232 elaborated-type-specifierelaborated-enum-specifier $default reduce using rule 232 (elaborated-type-specifier)

State 67

726 type-specifierelaborated-type-specifier $default reduce using rule 726 (type-specifier)

State 68

203 declarationempty-declaration $default reduce using rule 203 (declaration)

State 69

247 enum-specifierenum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" "{" shift, and go to state 189

State 70

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 190

State 71

714 type-nameenum-name $default reduce using rule 714 (type-name)

State 72

219 defining-type-specifierenum-specifier $default reduce using rule 219 (defining-type-specifier)

State 73

198 declarationexplicit-instantiation $default reduce using rule 198 (declaration)

State 74

199 declarationexplicit-specialization $default reduce using rule 199 (declaration)

State 75

269 explicit-specifier-optexplicit-specifier [IDENTIFIER] 330 function-specifierexplicit-specifier ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] IDENTIFIER reduce using rule 269 (explicit-specifier-opt) IDENTIFIER [reduce using rule 330 (function-specifier)] $default reduce using rule 330 (function-specifier)

State 76

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 191 template-name go to state 192

State 77

200 declarationexport-declaration $default reduce using rule 200 (declaration)

State 78

195 declarationfunction-definition $default reduce using rule 195 (declaration)

State 79

182 decl-specifierfunction-specifier $default reduce using rule 182 (decl-specifier)

State 80

334 global-module-fragment-optglobal-module-fragment $default reduce using rule 334 (global-module-fragment-opt)

State 81

7 EXPORT-opt %empty ["module"] 8 | "export" 427 module-declaration EXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt "export" shift, and go to state 193 $default reduce using rule 7 (EXPORT-opt) EXPORT-opt go to state 194 module-declaration go to state 195

State 82

201 declarationlinkage-specification $default reduce using rule 201 (declaration)

State 83

205 declarationmodule-import-declaration $default reduce using rule 205 (declaration)

State 84

447 namespace-definitionnamed-namespace-definition $default reduce using rule 447 (namespace-definition)

State 85

451 namespace-namenamespace-alias $default reduce using rule 451 (namespace-name)

State 86

109 block-declarationnamespace-alias-definition $default reduce using rule 109 (block-declaration)

State 87

202 declarationnamespace-definition $default reduce using rule 202 (declaration)

State 88

454 nested-name-specifiernamespace-name "::" "::" shift, and go to state 196

State 89

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 646 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 197 "template" shift, and go to state 198 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199

State 90

137 class-name IDENTIFIER 138 | simple-template-id 151 concept-name IDENTIFIER 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifiernested-name-specifier-opt type-name 649 | nested-name-specifier-opt template-name 696 template-name IDENTIFIER 708 type-constraintnested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 200 class-name go to state 55 concept-name go to state 201 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 202 type-name go to state 203 typedef-name go to state 108

State 91

449 namespace-definitionnested-namespace-definition $default reduce using rule 449 (namespace-definition)

State 92

194 declarationnodeclspec-function-declaration $default reduce using rule 194 (declaration)

State 93

115 block-declarationopaque-enum-declaration $default reduce using rule 115 (block-declaration)

State 94

648 simple-type-specifierplaceholder-type-specifier $default reduce using rule 648 (simple-type-specifier)

State 95

107 block-declarationsimple-declaration $default reduce using rule 107 (block-declaration)

State 96

138 class-namesimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 732 typedef-namesimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 138 (class-name) "," [reduce using rule 732 (typedef-name)] "constexpr" reduce using rule 138 (class-name) "constexpr" [reduce using rule 732 (typedef-name)] "..." reduce using rule 138 (class-name) "..." [reduce using rule 732 (typedef-name)] "export" reduce using rule 138 (class-name) "export" [reduce using rule 732 (typedef-name)] "extern" reduce using rule 138 (class-name) "extern" [reduce using rule 732 (typedef-name)] IDENTIFIER reduce using rule 138 (class-name) IDENTIFIER [reduce using rule 732 (typedef-name)] "inline" reduce using rule 138 (class-name) "inline" [reduce using rule 732 (typedef-name)] "noexcept" reduce using rule 138 (class-name) "noexcept" [reduce using rule 732 (typedef-name)] "::" reduce using rule 138 (class-name) "::" [reduce using rule 732 (typedef-name)] "template" reduce using rule 138 (class-name) "template" [reduce using rule 732 (typedef-name)] "typename" reduce using rule 138 (class-name) "typename" [reduce using rule 732 (typedef-name)] "virtual" reduce using rule 138 (class-name) "virtual" [reduce using rule 732 (typedef-name)] "+" reduce using rule 138 (class-name) "+" [reduce using rule 732 (typedef-name)] "-" reduce using rule 138 (class-name) "-" [reduce using rule 732 (typedef-name)] "using" reduce using rule 138 (class-name) "using" [reduce using rule 732 (typedef-name)] "=" reduce using rule 138 (class-name) "=" [reduce using rule 732 (typedef-name)] ";" reduce using rule 138 (class-name) ";" [reduce using rule 732 (typedef-name)] "alignas" reduce using rule 138 (class-name) "alignas" [reduce using rule 732 (typedef-name)] "(" reduce using rule 138 (class-name) "(" [reduce using rule 732 (typedef-name)] ")" reduce using rule 138 (class-name) ")" [reduce using rule 732 (typedef-name)] "&" reduce using rule 138 (class-name) "&" [reduce using rule 732 (typedef-name)] "asm" reduce using rule 138 (class-name) "asm" [reduce using rule 732 (typedef-name)] "*=" reduce using rule 138 (class-name) "*=" [reduce using rule 732 (typedef-name)] "/=" reduce using rule 138 (class-name) "/=" [reduce using rule 732 (typedef-name)] "%=" reduce using rule 138 (class-name) "%=" [reduce using rule 732 (typedef-name)] "+=" reduce using rule 138 (class-name) "+=" [reduce using rule 732 (typedef-name)] "-=" reduce using rule 138 (class-name) "-=" [reduce using rule 732 (typedef-name)] ">>=" reduce using rule 138 (class-name) ">>=" [reduce using rule 732 (typedef-name)] "<<=" reduce using rule 138 (class-name) "<<=" [reduce using rule 732 (typedef-name)] "&=" reduce using rule 138 (class-name) "&=" [reduce using rule 732 (typedef-name)] "^=" reduce using rule 138 (class-name) "^=" [reduce using rule 732 (typedef-name)] "|=" reduce using rule 138 (class-name) "|=" [reduce using rule 732 (typedef-name)] "[" reduce using rule 138 (class-name) "[" [reduce using rule 732 (typedef-name)] "]" reduce using rule 138 (class-name) "]" [reduce using rule 732 (typedef-name)] ":" reduce using rule 138 (class-name) ":" [reduce using rule 732 (typedef-name)] "{" reduce using rule 138 (class-name) "{" [reduce using rule 732 (typedef-name)] "}" reduce using rule 138 (class-name) "}" [reduce using rule 732 (typedef-name)] "class" reduce using rule 138 (class-name) "class" [reduce using rule 732 (typedef-name)] "struct" reduce using rule 138 (class-name) "struct" [reduce using rule 732 (typedef-name)] "union" reduce using rule 138 (class-name) "union" [reduce using rule 732 (typedef-name)] "final" reduce using rule 138 (class-name) "final" [reduce using rule 732 (typedef-name)] "<=>" reduce using rule 138 (class-name) "<=>" [reduce using rule 732 (typedef-name)] "concept" reduce using rule 138 (class-name) "concept" [reduce using rule 732 (typedef-name)] "?" reduce using rule 138 (class-name) "?" [reduce using rule 732 (typedef-name)] "&&" reduce using rule 138 (class-name) "&&" [reduce using rule 732 (typedef-name)] "||" reduce using rule 138 (class-name) "||" [reduce using rule 732 (typedef-name)] "operator" reduce using rule 138 (class-name) "operator" [reduce using rule 732 (typedef-name)] "const" reduce using rule 138 (class-name) "const" [reduce using rule 732 (typedef-name)] "volatile" reduce using rule 138 (class-name) "volatile" [reduce using rule 732 (typedef-name)] "friend" reduce using rule 138 (class-name) "friend" [reduce using rule 732 (typedef-name)] "typedef" reduce using rule 138 (class-name) "typedef" [reduce using rule 732 (typedef-name)] "consteval" reduce using rule 138 (class-name) "consteval" [reduce using rule 732 (typedef-name)] "constinit" reduce using rule 138 (class-name) "constinit" [reduce using rule 732 (typedef-name)] "decltype" reduce using rule 138 (class-name) "decltype" [reduce using rule 732 (typedef-name)] "->" reduce using rule 138 (class-name) "->" [reduce using rule 732 (typedef-name)] "." reduce using rule 138 (class-name) "." [reduce using rule 732 (typedef-name)] "enum" reduce using rule 138 (class-name) "enum" [reduce using rule 732 (typedef-name)] "==" reduce using rule 138 (class-name) "==" [reduce using rule 732 (typedef-name)] "!=" reduce using rule 138 (class-name) "!=" [reduce using rule 732 (typedef-name)] "^" reduce using rule 138 (class-name) "^" [reduce using rule 732 (typedef-name)] "<" reduce using rule 138 (class-name) "<" [reduce using rule 732 (typedef-name)] ">" reduce using rule 138 (class-name) ">" [reduce using rule 732 (typedef-name)] "explicit" reduce using rule 138 (class-name) "explicit" [reduce using rule 732 (typedef-name)] "*" reduce using rule 138 (class-name) "*" [reduce using rule 732 (typedef-name)] "/" reduce using rule 138 (class-name) "/" [reduce using rule 732 (typedef-name)] "%" reduce using rule 138 (class-name) "%" [reduce using rule 732 (typedef-name)] "|" reduce using rule 138 (class-name) "|" [reduce using rule 732 (typedef-name)] "<<" reduce using rule 138 (class-name) "<<" [reduce using rule 732 (typedef-name)] ">>" reduce using rule 138 (class-name) ">>" [reduce using rule 732 (typedef-name)] "<=" reduce using rule 138 (class-name) "<=" [reduce using rule 732 (typedef-name)] ">=" reduce using rule 138 (class-name) ">=" [reduce using rule 732 (typedef-name)] ".*" reduce using rule 138 (class-name) ".*" [reduce using rule 732 (typedef-name)] "->*" reduce using rule 138 (class-name) "->*" [reduce using rule 732 (typedef-name)] "try" reduce using rule 138 (class-name) "try" [reduce using rule 732 (typedef-name)] "import" reduce using rule 138 (class-name) "import" [reduce using rule 732 (typedef-name)] "namespace" reduce using rule 138 (class-name) "namespace" [reduce using rule 732 (typedef-name)] "requires" reduce using rule 138 (class-name) "requires" [reduce using rule 732 (typedef-name)] "~" reduce using rule 138 (class-name) "~" [reduce using rule 732 (typedef-name)] "++" reduce using rule 138 (class-name) "++" [reduce using rule 732 (typedef-name)] "--" reduce using rule 138 (class-name) "--" [reduce using rule 732 (typedef-name)] "auto" reduce using rule 138 (class-name) "auto" [reduce using rule 732 (typedef-name)] "char" reduce using rule 138 (class-name) "char" [reduce using rule 732 (typedef-name)] "char8_t" reduce using rule 138 (class-name) "char8_t" [reduce using rule 732 (typedef-name)] "char16_t" reduce using rule 138 (class-name) "char16_t" [reduce using rule 732 (typedef-name)] "char32_t" reduce using rule 138 (class-name) "char32_t" [reduce using rule 732 (typedef-name)] "wchar_t" reduce using rule 138 (class-name) "wchar_t" [reduce using rule 732 (typedef-name)] "bool" reduce using rule 138 (class-name) "bool" [reduce using rule 732 (typedef-name)] "short" reduce using rule 138 (class-name) "short" [reduce using rule 732 (typedef-name)] "int" reduce using rule 138 (class-name) "int" [reduce using rule 732 (typedef-name)] "long" reduce using rule 138 (class-name) "long" [reduce using rule 732 (typedef-name)] "signed" reduce using rule 138 (class-name) "signed" [reduce using rule 732 (typedef-name)] "unsigned" reduce using rule 138 (class-name) "unsigned" [reduce using rule 732 (typedef-name)] "float" reduce using rule 138 (class-name) "float" [reduce using rule 732 (typedef-name)] "double" reduce using rule 138 (class-name) "double" [reduce using rule 732 (typedef-name)] "void" reduce using rule 138 (class-name) "void" [reduce using rule 732 (typedef-name)] "static_assert" reduce using rule 138 (class-name) "static_assert" [reduce using rule 732 (typedef-name)] "static" reduce using rule 138 (class-name) "static" [reduce using rule 732 (typedef-name)] "thread_local" reduce using rule 138 (class-name) "thread_local" [reduce using rule 732 (typedef-name)] "mutable" reduce using rule 138 (class-name) "mutable" [reduce using rule 732 (typedef-name)] "override" reduce using rule 138 (class-name) "override" [reduce using rule 732 (typedef-name)] $default reduce using rule 138 (class-name)

State 97

725 type-specifiersimple-type-specifier $default reduce using rule 725 (type-specifier)

State 98

113 block-declarationstatic_assert-declaration $default reduce using rule 113 (block-declaration)

State 99

180 decl-specifierstorage-class-specifier $default reduce using rule 180 (decl-specifier)

State 100

196 declarationtemplate-declaration $default reduce using rule 196 (declaration)

State 101

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 150 concept-definition "concept" concept-name "=" constraint-expression ";" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 690 | template-head declaration 691 | template-head concept-definition 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "concept" shift, and go to state 204 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 concept-definition go to state 205 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 206 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 102

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" "<" shift, and go to state 207

State 103

0 $accepttranslation-unit $end $end shift, and go to state 208

State 104

711 type-constraint-opttype-constraint $default reduce using rule 711 (type-constraint-opt)

State 105

554 placeholder-type-specifiertype-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" "decltype" shift, and go to state 209 "auto" shift, and go to state 210

State 106

453 nested-name-specifiertype-name "::" "::" shift, and go to state 211

State 107

217 defining-type-specifiertype-specifier $default reduce using rule 217 (defining-type-specifier)

State 108

715 type-nametypedef-name $default reduce using rule 715 (type-name)

State 109

727 type-specifiertypename-specifier $default reduce using rule 727 (type-specifier)

State 110

448 namespace-definitionunnamed-namespace-definition $default reduce using rule 448 (namespace-definition)

State 111

110 block-declarationusing-declaration $default reduce using rule 110 (block-declaration)

State 112

112 block-declarationusing-directive $default reduce using rule 112 (block-declaration)

State 113

111 block-declarationusing-enum-declaration $default reduce using rule 111 (block-declaration)

State 114

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 212 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 115

270 export-declaration"export" declaration $default reduce using rule 270 (export-declaration)

State 116

205 declarationmodule-import-declaration [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "private", "protected", "public", "using", ";", "alignas", "(", "&", "asm", "[", ":", "}", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "module", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 272 export-declaration"export" module-import-declaration [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "private", "protected", "public", "using", ";", "alignas", "(", "&", "asm", "[", ":", "}", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "module", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] $end reduce using rule 205 (declaration) $end [reduce using rule 272 (export-declaration)] "constexpr" reduce using rule 205 (declaration) "constexpr" [reduce using rule 272 (export-declaration)] "..." reduce using rule 205 (declaration) "..." [reduce using rule 272 (export-declaration)] "export" reduce using rule 205 (declaration) "export" [reduce using rule 272 (export-declaration)] "extern" reduce using rule 205 (declaration) "extern" [reduce using rule 272 (export-declaration)] IDENTIFIER reduce using rule 205 (declaration) IDENTIFIER [reduce using rule 272 (export-declaration)] "inline" reduce using rule 205 (declaration) "inline" [reduce using rule 272 (export-declaration)] "::" reduce using rule 205 (declaration) "::" [reduce using rule 272 (export-declaration)] "template" reduce using rule 205 (declaration) "template" [reduce using rule 272 (export-declaration)] "typename" reduce using rule 205 (declaration) "typename" [reduce using rule 272 (export-declaration)] "virtual" reduce using rule 205 (declaration) "virtual" [reduce using rule 272 (export-declaration)] "private" reduce using rule 205 (declaration) "private" [reduce using rule 272 (export-declaration)] "protected" reduce using rule 205 (declaration) "protected" [reduce using rule 272 (export-declaration)] "public" reduce using rule 205 (declaration) "public" [reduce using rule 272 (export-declaration)] "using" reduce using rule 205 (declaration) "using" [reduce using rule 272 (export-declaration)] ";" reduce using rule 205 (declaration) ";" [reduce using rule 272 (export-declaration)] "alignas" reduce using rule 205 (declaration) "alignas" [reduce using rule 272 (export-declaration)] "(" reduce using rule 205 (declaration) "(" [reduce using rule 272 (export-declaration)] "&" reduce using rule 205 (declaration) "&" [reduce using rule 272 (export-declaration)] "asm" reduce using rule 205 (declaration) "asm" [reduce using rule 272 (export-declaration)] "[" reduce using rule 205 (declaration) "[" [reduce using rule 272 (export-declaration)] ":" reduce using rule 205 (declaration) ":" [reduce using rule 272 (export-declaration)] "}" reduce using rule 205 (declaration) "}" [reduce using rule 272 (export-declaration)] "class" reduce using rule 205 (declaration) "class" [reduce using rule 272 (export-declaration)] "struct" reduce using rule 205 (declaration) "struct" [reduce using rule 272 (export-declaration)] "union" reduce using rule 205 (declaration) "union" [reduce using rule 272 (export-declaration)] "&&" reduce using rule 205 (declaration) "&&" [reduce using rule 272 (export-declaration)] "operator" reduce using rule 205 (declaration) "operator" [reduce using rule 272 (export-declaration)] "const" reduce using rule 205 (declaration) "const" [reduce using rule 272 (export-declaration)] "volatile" reduce using rule 205 (declaration) "volatile" [reduce using rule 272 (export-declaration)] "friend" reduce using rule 205 (declaration) "friend" [reduce using rule 272 (export-declaration)] "typedef" reduce using rule 205 (declaration) "typedef" [reduce using rule 272 (export-declaration)] "consteval" reduce using rule 205 (declaration) "consteval" [reduce using rule 272 (export-declaration)] "constinit" reduce using rule 205 (declaration) "constinit" [reduce using rule 272 (export-declaration)] "decltype" reduce using rule 205 (declaration) "decltype" [reduce using rule 272 (export-declaration)] "enum" reduce using rule 205 (declaration) "enum" [reduce using rule 272 (export-declaration)] "explicit" reduce using rule 205 (declaration) "explicit" [reduce using rule 272 (export-declaration)] "*" reduce using rule 205 (declaration) "*" [reduce using rule 272 (export-declaration)] "module" reduce using rule 205 (declaration) "module" [reduce using rule 272 (export-declaration)] "import" reduce using rule 205 (declaration) "import" [reduce using rule 272 (export-declaration)] "namespace" reduce using rule 205 (declaration) "namespace" [reduce using rule 272 (export-declaration)] "~" reduce using rule 205 (declaration) "~" [reduce using rule 272 (export-declaration)] "auto" reduce using rule 205 (declaration) "auto" [reduce using rule 272 (export-declaration)] "char" reduce using rule 205 (declaration) "char" [reduce using rule 272 (export-declaration)] "char8_t" reduce using rule 205 (declaration) "char8_t" [reduce using rule 272 (export-declaration)] "char16_t" reduce using rule 205 (declaration) "char16_t" [reduce using rule 272 (export-declaration)] "char32_t" reduce using rule 205 (declaration) "char32_t" [reduce using rule 272 (export-declaration)] "wchar_t" reduce using rule 205 (declaration) "wchar_t" [reduce using rule 272 (export-declaration)] "bool" reduce using rule 205 (declaration) "bool" [reduce using rule 272 (export-declaration)] "short" reduce using rule 205 (declaration) "short" [reduce using rule 272 (export-declaration)] "int" reduce using rule 205 (declaration) "int" [reduce using rule 272 (export-declaration)] "long" reduce using rule 205 (declaration) "long" [reduce using rule 272 (export-declaration)] "signed" reduce using rule 205 (declaration) "signed" [reduce using rule 272 (export-declaration)] "unsigned" reduce using rule 205 (declaration) "unsigned" [reduce using rule 272 (export-declaration)] "float" reduce using rule 205 (declaration) "float" [reduce using rule 272 (export-declaration)] "double" reduce using rule 205 (declaration) "double" [reduce using rule 272 (export-declaration)] "void" reduce using rule 205 (declaration) "void" [reduce using rule 272 (export-declaration)] "static_assert" reduce using rule 205 (declaration) "static_assert" [reduce using rule 272 (export-declaration)] "static" reduce using rule 205 (declaration) "static" [reduce using rule 272 (export-declaration)] "thread_local" reduce using rule 205 (declaration) "thread_local" [reduce using rule 272 (export-declaration)] "mutable" reduce using rule 205 (declaration) "mutable" [reduce using rule 272 (export-declaration)] $default reduce using rule 205 (declaration)

State 117

682 string-literalSTRING_LITERAL $default reduce using rule 682 (string-literal)

State 118

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 390 | "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "{" shift, and go to state 213 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 214 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 119

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 265 explicit-specialization"template" "<" ">" declaration 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 692 | "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 699 template-parameter-list template-parameter 700 | template-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 215 "typename" shift, and go to state 216 "class" shift, and go to state 217 "decltype" shift, and go to state 21 ">" shift, and go to state 218 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 223 template-parameter-list go to state 224 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108

State 120

455 nested-name-specifierdecltype-specifier "::" "::" shift, and go to state 188

State 121

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 228 "template" shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 230

State 122

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 231

State 123

26 TYPENAME-opt"typename" $default reduce using rule 26 (TYPENAME-opt)

State 124

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 133 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 125

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 232 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 126

768 using-enum-declaration"using" elaborated-enum-specifier ";" ";" shift, and go to state 233

State 127

5 ELLIPSIS-opt %empty [",", ";"] 6 | "..." 765 using-declarator-listusing-declarator ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 234

State 128

763 using-declaration"using" using-declarator-list ";" 766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "," shift, and go to state 235 ";" shift, and go to state 236

State 129

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 214 | "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 276 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 130

244 enum-key"enum" "class" $default reduce using rule 244 (enum-key)

State 131

245 enum-key"enum" "struct" $default reduce using rule 245 (enum-key)

State 132

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] IDENTIFIER shift, and go to state 197 "template" shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199

State 133

228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 307

State 134

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier"explicit" "(" constant-expression ")" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 309 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 135

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["export", "module"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 332 global-module-fragment"module" ";" declaration-seq-opt 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 208 (declaration-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 208 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 311 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 136

432 module-name-qualifierIDENTIFIER "." "." shift, and go to state 312

State 137

432 module-name-qualifier IDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt %empty [IDENTIFIER] 435 | module-name-qualifier 436 module-partition":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 136 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] module-name-qualifier go to state 141 module-name-qualifier-opt go to state 313

State 138

339 header-nameHEADER_NAME $default reduce using rule 339 (header-name)

State 139

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 430 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 314

State 140

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 315

State 141

433 module-name-qualifiermodule-name-qualifier IDENTIFIER "." 435 module-name-qualifier-optmodule-name-qualifier [IDENTIFIER] IDENTIFIER shift, and go to state 316 IDENTIFIER [reduce using rule 435 (module-name-qualifier-opt)]

State 142

431 module-namemodule-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 317

State 143

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 429 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 318

State 144

234 enclosing-namespace-specifierIDENTIFIER ["::"] 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" "=" shift, and go to state 319 $default reduce using rule 234 (enclosing-namespace-specifier)

State 145

235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "::" shift, and go to state 320

State 146

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 321 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 147

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 264 | EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 322 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 148

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 323

State 149

680 storage-class-specifier"extern" $default reduce using rule 680 (storage-class-specifier)

State 150

188 decl-specifier"inline" $default reduce using rule 188 (decl-specifier)

State 151

71 attribute-declarationattribute-specifier-seq ";" $default reduce using rule 71 (attribute-declaration)

State 152

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 348 init-declarator declarator initializer-opt 349 | declarator requires-clause 350 init-declarator-list init-declarator 351 | init-declarator-list "," init-declarator 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 182 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 init-declarator go to state 183 init-declarator-list go to state 324 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 153

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 325

State 154

330 function-specifierexplicit-specifier $default reduce using rule 330 (function-specifier)

State 155

6 ELLIPSIS-opt"..." $default reduce using rule 6 (ELLIPSIS-opt)

State 156

767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" "namespace" shift, and go to state 326

State 157

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" "(" shift, and go to state 327

State 158

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 328 ptr-declarator go to state 329 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 159

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 594 ptr-operator"&" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 330

State 160

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" "(" shift, and go to state 331

State 161

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "[" shift, and go to state 332

State 162

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 595 ptr-operator"&&" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 333

State 163

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 334

State 164

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 213 declarator-idELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "~" shift, and go to state 335 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 336 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 165

81 attribute-specifieralignment-specifier $default reduce using rule 81 (attribute-specifier)

State 166

82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier $default reduce using rule 82 (attribute-specifier-seq)

State 167

192 decl-specifier-seq-optdecl-specifier-seq ["...", IDENTIFIER, "::", "(", "&", "&&", "operator", "decltype", "*", "~"] 602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty ["["] 605 | ref-qualifier 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "&" shift, and go to state 338 "&&" shift, and go to state 339 "&" [reduce using rule 192 (decl-specifier-seq-opt)] "[" reduce using rule 604 (ref-qualifier-opt) "&&" [reduce using rule 192 (decl-specifier-seq-opt)] $default reduce using rule 192 (decl-specifier-seq-opt) ref-qualifier go to state 340 ref-qualifier-opt go to state 341

State 168

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 342 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 169

476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" ";" shift, and go to state 343

State 170

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 490 noptr-declaratordeclarator-id attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 344

State 171

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 646 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 197 "template" shift, and go to state 198 "*" shift, and go to state 345 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199

State 172

212 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type 491 noptr-declaratornoptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 591 ptr-declaratornoptr-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" shift, and go to state 346 "[" shift, and go to state 347 "(" [reduce using rule 591 (ptr-declarator)] $default reduce using rule 591 (ptr-declarator) parameters-and-qualifiers go to state 348

State 173

211 declaratorptr-declarator $default reduce using rule 211 (declarator)

State 174

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 328 ptr-declarator go to state 349 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 175

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 142 class-specifierclass-head "{" member-specification-opt "}" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 233 empty-declaration ";" 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 423 member-specification member-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt %empty ["}"] 426 | member-specification 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 763 using-declaration "using" using-declarator-list ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 350 "protected" shift, and go to state 351 "public" shift, and go to state 352 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 353 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 425 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 354 alias-declaration go to state 355 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 356 deduction-guide go to state 357 empty-declaration go to state 358 enum-key go to state 359 explicit-specialization go to state 360 explicit-specifier go to state 361 explicit-specifier-opt go to state 76 function-definition go to state 362 member-declaration go to state 363 member-specification go to state 364 member-specification-opt go to state 365 opaque-enum-declaration go to state 366 static_assert-declaration go to state 367 template-declaration go to state 368 template-head go to state 101 using-declaration go to state 369 using-enum-declaration go to state 370

State 176

84 attribute-specifier-seq-optattribute-specifier-seq $default reduce using rule 84 (attribute-specifier-seq-opt)

State 177

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 99 base-clause ":" base-specifier-list 100 base-clause-opt %empty ["{"] 101 | base-clause 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 133 class-head-name nested-name-specifier-opt class-name 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 157 "[" shift, and go to state 161 ":" shift, and go to state 371 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 100 (base-clause-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 base-clause go to state 372 base-clause-opt go to state 373 class-head-name go to state 374 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 375 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 178

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 231 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" IDENTIFIER shift, and go to state 197 "template" shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 376

State 179

138 class-namesimple-template-id ["::"] 230 elaborated-type-specifierclass-key simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 732 typedef-namesimple-template-id ["::"] "::" reduce using rule 138 (class-name) "::" [reduce using rule 230 (elaborated-type-specifier)] "::" [reduce using rule 732 (typedef-name)] $default reduce using rule 230 (elaborated-type-specifier)

State 180

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 189 decl-specifier-seqdecl-specifier attribute-specifier-seq-opt [",", "...", IDENTIFIER, "noexcept", "::", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "&&", "operator", "decltype", "->", ">", "*", "requires", "~"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "alignas" [reduce using rule 189 (decl-specifier-seq)] "[" [reduce using rule 189 (decl-specifier-seq)] $default reduce using rule 189 (decl-specifier-seq) alignment-specifier go to state 165 attribute-specifier go to state 166

State 181

190 decl-specifier-seqdecl-specifier decl-specifier-seq $default reduce using rule 190 (decl-specifier-seq)

State 182

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 348 init-declaratordeclarator initializer-opt 349 | declarator requires-clause 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" 365 initializer-opt %empty [",", ";"] 366 | initializer 621 requires-clause "requires" constraint-logical-or-expression "=" shift, and go to state 377 "(" shift, and go to state 378 "{" shift, and go to state 379 "requires" shift, and go to state 380 $default reduce using rule 365 (initializer-opt) brace-or-equal-initializer go to state 381 braced-init-list go to state 382 initializer go to state 383 initializer-opt go to state 384 requires-clause go to state 385

State 183

350 init-declarator-listinit-declarator $default reduce using rule 350 (init-declarator-list)

State 184

351 init-declarator-listinit-declarator-list "," init-declarator 353 init-declarator-list-optinit-declarator-list [";"] "," shift, and go to state 386 $default reduce using rule 353 (init-declarator-list-opt)

State 185

640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" ";" shift, and go to state 387

State 186

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt IDENTIFIER shift, and go to state 197 "template" shift, and go to state 229 "*" shift, and go to state 345 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 199

State 187

207 declaration-seqdeclaration-seq declaration $default reduce using rule 207 (declaration-seq)

State 188

455 nested-name-specifierdecltype-specifier "::" $default reduce using rule 455 (nested-name-specifier)

State 189

247 enum-specifierenum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 249 enumerator IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition enumerator 251 | enumerator "=" constant-expression 252 enumerator-list enumerator-definition 253 | enumerator-list "," enumerator-definition 254 enumerator-list-opt %empty ["}"] 255 | enumerator-list IDENTIFIER shift, and go to state 388 $default reduce using rule 254 (enumerator-list-opt) enumerator go to state 389 enumerator-definition go to state 390 enumerator-list go to state 391 enumerator-list-opt go to state 392

State 190

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-name nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt %empty [":", "{"] 242 | enum-head-name 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 241 (enum-head-name-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-head-name go to state 393 enum-head-name-opt go to state 394 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 395 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 191

696 template-nameIDENTIFIER $default reduce using rule 696 (template-name)

State 192

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" "(" shift, and go to state 396

State 193

8 EXPORT-opt"export" $default reduce using rule 8 (EXPORT-opt)

State 194

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" "module" shift, and go to state 397

State 195

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty [$end, "module"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 208 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 398 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 196

454 nested-name-specifiernamespace-name "::" $default reduce using rule 454 (nested-name-specifier)

State 197

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" "::" shift, and go to state 399

State 198

22 TEMPLATE-opt"template" [IDENTIFIER, "operator", "~"] 644 simple-template-id template-name "<" template-argument-list-opt ">" 646 simple-type-specifiernested-name-specifier "template" simple-template-id 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 191 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] $default reduce using rule 22 (TEMPLATE-opt) simple-template-id go to state 400 template-name go to state 102

State 199

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 191 simple-template-id go to state 401 template-name go to state 102

State 200

137 class-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 151 concept-nameIDENTIFIER ["decltype", "<", "auto"] 246 enum-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 696 template-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 731 typedef-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 137 (class-name) "," [reduce using rule 246 (enum-name)] "," [reduce using rule 696 (template-name)] "," [reduce using rule 731 (typedef-name)] "constexpr" reduce using rule 137 (class-name) "constexpr" [reduce using rule 246 (enum-name)] "constexpr" [reduce using rule 696 (template-name)] "constexpr" [reduce using rule 731 (typedef-name)] "..." reduce using rule 137 (class-name) "..." [reduce using rule 246 (enum-name)] "..." [reduce using rule 696 (template-name)] "..." [reduce using rule 731 (typedef-name)] "export" reduce using rule 137 (class-name) "export" [reduce using rule 246 (enum-name)] "export" [reduce using rule 696 (template-name)] "export" [reduce using rule 731 (typedef-name)] "extern" reduce using rule 137 (class-name) "extern" [reduce using rule 246 (enum-name)] "extern" [reduce using rule 696 (template-name)] "extern" [reduce using rule 731 (typedef-name)] IDENTIFIER reduce using rule 137 (class-name) IDENTIFIER [reduce using rule 246 (enum-name)] IDENTIFIER [reduce using rule 696 (template-name)] IDENTIFIER [reduce using rule 731 (typedef-name)] "inline" reduce using rule 137 (class-name) "inline" [reduce using rule 246 (enum-name)] "inline" [reduce using rule 696 (template-name)] "inline" [reduce using rule 731 (typedef-name)] "noexcept" reduce using rule 137 (class-name) "noexcept" [reduce using rule 246 (enum-name)] "noexcept" [reduce using rule 696 (template-name)] "noexcept" [reduce using rule 731 (typedef-name)] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 696 (template-name)] "::" [reduce using rule 731 (typedef-name)] "template" reduce using rule 137 (class-name) "template" [reduce using rule 246 (enum-name)] "template" [reduce using rule 696 (template-name)] "template" [reduce using rule 731 (typedef-name)] "typename" reduce using rule 137 (class-name) "typename" [reduce using rule 246 (enum-name)] "typename" [reduce using rule 696 (template-name)] "typename" [reduce using rule 731 (typedef-name)] "virtual" reduce using rule 137 (class-name) "virtual" [reduce using rule 246 (enum-name)] "virtual" [reduce using rule 696 (template-name)] "virtual" [reduce using rule 731 (typedef-name)] "+" reduce using rule 137 (class-name) "+" [reduce using rule 246 (enum-name)] "+" [reduce using rule 696 (template-name)] "+" [reduce using rule 731 (typedef-name)] "-" reduce using rule 137 (class-name) "-" [reduce using rule 246 (enum-name)] "-" [reduce using rule 696 (template-name)] "-" [reduce using rule 731 (typedef-name)] "using" reduce using rule 137 (class-name) "using" [reduce using rule 246 (enum-name)] "using" [reduce using rule 696 (template-name)] "using" [reduce using rule 731 (typedef-name)] "=" reduce using rule 137 (class-name) "=" [reduce using rule 246 (enum-name)] "=" [reduce using rule 696 (template-name)] "=" [reduce using rule 731 (typedef-name)] ";" reduce using rule 137 (class-name) ";" [reduce using rule 246 (enum-name)] ";" [reduce using rule 696 (template-name)] ";" [reduce using rule 731 (typedef-name)] "alignas" reduce using rule 137 (class-name) "alignas" [reduce using rule 246 (enum-name)] "alignas" [reduce using rule 696 (template-name)] "alignas" [reduce using rule 731 (typedef-name)] "(" reduce using rule 137 (class-name) "(" [reduce using rule 246 (enum-name)] "(" [reduce using rule 696 (template-name)] "(" [reduce using rule 731 (typedef-name)] ")" reduce using rule 137 (class-name) ")" [reduce using rule 246 (enum-name)] ")" [reduce using rule 696 (template-name)] ")" [reduce using rule 731 (typedef-name)] "&" reduce using rule 137 (class-name) "&" [reduce using rule 246 (enum-name)] "&" [reduce using rule 696 (template-name)] "&" [reduce using rule 731 (typedef-name)] "asm" reduce using rule 137 (class-name) "asm" [reduce using rule 246 (enum-name)] "asm" [reduce using rule 696 (template-name)] "asm" [reduce using rule 731 (typedef-name)] "*=" reduce using rule 137 (class-name) "*=" [reduce using rule 246 (enum-name)] "*=" [reduce using rule 696 (template-name)] "*=" [reduce using rule 731 (typedef-name)] "/=" reduce using rule 137 (class-name) "/=" [reduce using rule 246 (enum-name)] "/=" [reduce using rule 696 (template-name)] "/=" [reduce using rule 731 (typedef-name)] "%=" reduce using rule 137 (class-name) "%=" [reduce using rule 246 (enum-name)] "%=" [reduce using rule 696 (template-name)] "%=" [reduce using rule 731 (typedef-name)] "+=" reduce using rule 137 (class-name) "+=" [reduce using rule 246 (enum-name)] "+=" [reduce using rule 696 (template-name)] "+=" [reduce using rule 731 (typedef-name)] "-=" reduce using rule 137 (class-name) "-=" [reduce using rule 246 (enum-name)] "-=" [reduce using rule 696 (template-name)] "-=" [reduce using rule 731 (typedef-name)] ">>=" reduce using rule 137 (class-name) ">>=" [reduce using rule 246 (enum-name)] ">>=" [reduce using rule 696 (template-name)] ">>=" [reduce using rule 731 (typedef-name)] "<<=" reduce using rule 137 (class-name) "<<=" [reduce using rule 246 (enum-name)] "<<=" [reduce using rule 696 (template-name)] "<<=" [reduce using rule 731 (typedef-name)] "&=" reduce using rule 137 (class-name) "&=" [reduce using rule 246 (enum-name)] "&=" [reduce using rule 696 (template-name)] "&=" [reduce using rule 731 (typedef-name)] "^=" reduce using rule 137 (class-name) "^=" [reduce using rule 246 (enum-name)] "^=" [reduce using rule 696 (template-name)] "^=" [reduce using rule 731 (typedef-name)] "|=" reduce using rule 137 (class-name) "|=" [reduce using rule 246 (enum-name)] "|=" [reduce using rule 696 (template-name)] "|=" [reduce using rule 731 (typedef-name)] "[" reduce using rule 137 (class-name) "[" [reduce using rule 246 (enum-name)] "[" [reduce using rule 696 (template-name)] "[" [reduce using rule 731 (typedef-name)] "]" reduce using rule 137 (class-name) "]" [reduce using rule 246 (enum-name)] "]" [reduce using rule 696 (template-name)] "]" [reduce using rule 731 (typedef-name)] ":" reduce using rule 137 (class-name) ":" [reduce using rule 246 (enum-name)] ":" [reduce using rule 696 (template-name)] ":" [reduce using rule 731 (typedef-name)] "{" reduce using rule 137 (class-name) "{" [reduce using rule 246 (enum-name)] "{" [reduce using rule 696 (template-name)] "{" [reduce using rule 731 (typedef-name)] "}" reduce using rule 137 (class-name) "}" [reduce using rule 246 (enum-name)] "}" [reduce using rule 696 (template-name)] "}" [reduce using rule 731 (typedef-name)] "class" reduce using rule 137 (class-name) "class" [reduce using rule 246 (enum-name)] "class" [reduce using rule 696 (template-name)] "class" [reduce using rule 731 (typedef-name)] "struct" reduce using rule 137 (class-name) "struct" [reduce using rule 246 (enum-name)] "struct" [reduce using rule 696 (template-name)] "struct" [reduce using rule 731 (typedef-name)] "union" reduce using rule 137 (class-name) "union" [reduce using rule 246 (enum-name)] "union" [reduce using rule 696 (template-name)] "union" [reduce using rule 731 (typedef-name)] "final" reduce using rule 137 (class-name) "final" [reduce using rule 246 (enum-name)] "final" [reduce using rule 696 (template-name)] "final" [reduce using rule 731 (typedef-name)] "<=>" reduce using rule 137 (class-name) "<=>" [reduce using rule 246 (enum-name)] "<=>" [reduce using rule 696 (template-name)] "<=>" [reduce using rule 731 (typedef-name)] "concept" reduce using rule 137 (class-name) "concept" [reduce using rule 246 (enum-name)] "concept" [reduce using rule 696 (template-name)] "concept" [reduce using rule 731 (typedef-name)] "?" reduce using rule 137 (class-name) "?" [reduce using rule 246 (enum-name)] "?" [reduce using rule 696 (template-name)] "?" [reduce using rule 731 (typedef-name)] "&&" reduce using rule 137 (class-name) "&&" [reduce using rule 246 (enum-name)] "&&" [reduce using rule 696 (template-name)] "&&" [reduce using rule 731 (typedef-name)] "||" reduce using rule 137 (class-name) "||" [reduce using rule 246 (enum-name)] "||" [reduce using rule 696 (template-name)] "||" [reduce using rule 731 (typedef-name)] "operator" reduce using rule 137 (class-name) "operator" [reduce using rule 246 (enum-name)] "operator" [reduce using rule 696 (template-name)] "operator" [reduce using rule 731 (typedef-name)] "const" reduce using rule 137 (class-name) "const" [reduce using rule 246 (enum-name)] "const" [reduce using rule 696 (template-name)] "const" [reduce using rule 731 (typedef-name)] "volatile" reduce using rule 137 (class-name) "volatile" [reduce using rule 246 (enum-name)] "volatile" [reduce using rule 696 (template-name)] "volatile" [reduce using rule 731 (typedef-name)] "friend" reduce using rule 137 (class-name) "friend" [reduce using rule 246 (enum-name)] "friend" [reduce using rule 696 (template-name)] "friend" [reduce using rule 731 (typedef-name)] "typedef" reduce using rule 137 (class-name) "typedef" [reduce using rule 246 (enum-name)] "typedef" [reduce using rule 696 (template-name)] "typedef" [reduce using rule 731 (typedef-name)] "consteval" reduce using rule 137 (class-name) "consteval" [reduce using rule 246 (enum-name)] "consteval" [reduce using rule 696 (template-name)] "consteval" [reduce using rule 731 (typedef-name)] "constinit" reduce using rule 137 (class-name) "constinit" [reduce using rule 246 (enum-name)] "constinit" [reduce using rule 696 (template-name)] "constinit" [reduce using rule 731 (typedef-name)] "decltype" reduce using rule 137 (class-name) "decltype" [reduce using rule 151 (concept-name)] "decltype" [reduce using rule 246 (enum-name)] "decltype" [reduce using rule 696 (template-name)] "decltype" [reduce using rule 731 (typedef-name)] "->" reduce using rule 137 (class-name) "->" [reduce using rule 246 (enum-name)] "->" [reduce using rule 696 (template-name)] "->" [reduce using rule 731 (typedef-name)] "." reduce using rule 137 (class-name) "." [reduce using rule 246 (enum-name)] "." [reduce using rule 696 (template-name)] "." [reduce using rule 731 (typedef-name)] "enum" reduce using rule 137 (class-name) "enum" [reduce using rule 246 (enum-name)] "enum" [reduce using rule 696 (template-name)] "enum" [reduce using rule 731 (typedef-name)] "==" reduce using rule 137 (class-name) "==" [reduce using rule 246 (enum-name)] "==" [reduce using rule 696 (template-name)] "==" [reduce using rule 731 (typedef-name)] "!=" reduce using rule 137 (class-name) "!=" [reduce using rule 246 (enum-name)] "!=" [reduce using rule 696 (template-name)] "!=" [reduce using rule 731 (typedef-name)] "^" reduce using rule 137 (class-name) "^" [reduce using rule 246 (enum-name)] "^" [reduce using rule 696 (template-name)] "^" [reduce using rule 731 (typedef-name)] "<" reduce using rule 137 (class-name) "<" [reduce using rule 151 (concept-name)] "<" [reduce using rule 246 (enum-name)] "<" [reduce using rule 696 (template-name)] "<" [reduce using rule 731 (typedef-name)] ">" reduce using rule 137 (class-name) ">" [reduce using rule 246 (enum-name)] ">" [reduce using rule 696 (template-name)] ">" [reduce using rule 731 (typedef-name)] "explicit" reduce using rule 137 (class-name) "explicit" [reduce using rule 246 (enum-name)] "explicit" [reduce using rule 696 (template-name)] "explicit" [reduce using rule 731 (typedef-name)] "*" reduce using rule 137 (class-name) "*" [reduce using rule 246 (enum-name)] "*" [reduce using rule 696 (template-name)] "*" [reduce using rule 731 (typedef-name)] "/" reduce using rule 137 (class-name) "/" [reduce using rule 246 (enum-name)] "/" [reduce using rule 696 (template-name)] "/" [reduce using rule 731 (typedef-name)] "%" reduce using rule 137 (class-name) "%" [reduce using rule 246 (enum-name)] "%" [reduce using rule 696 (template-name)] "%" [reduce using rule 731 (typedef-name)] "|" reduce using rule 137 (class-name) "|" [reduce using rule 246 (enum-name)] "|" [reduce using rule 696 (template-name)] "|" [reduce using rule 731 (typedef-name)] "<<" reduce using rule 137 (class-name) "<<" [reduce using rule 246 (enum-name)] "<<" [reduce using rule 696 (template-name)] "<<" [reduce using rule 731 (typedef-name)] ">>" reduce using rule 137 (class-name) ">>" [reduce using rule 246 (enum-name)] ">>" [reduce using rule 696 (template-name)] ">>" [reduce using rule 731 (typedef-name)] "<=" reduce using rule 137 (class-name) "<=" [reduce using rule 246 (enum-name)] "<=" [reduce using rule 696 (template-name)] "<=" [reduce using rule 731 (typedef-name)] ">=" reduce using rule 137 (class-name) ">=" [reduce using rule 246 (enum-name)] ">=" [reduce using rule 696 (template-name)] ">=" [reduce using rule 731 (typedef-name)] ".*" reduce using rule 137 (class-name) ".*" [reduce using rule 246 (enum-name)] ".*" [reduce using rule 696 (template-name)] ".*" [reduce using rule 731 (typedef-name)] "->*" reduce using rule 137 (class-name) "->*" [reduce using rule 246 (enum-name)] "->*" [reduce using rule 696 (template-name)] "->*" [reduce using rule 731 (typedef-name)] "try" reduce using rule 137 (class-name) "try" [reduce using rule 246 (enum-name)] "try" [reduce using rule 696 (template-name)] "try" [reduce using rule 731 (typedef-name)] "import" reduce using rule 137 (class-name) "import" [reduce using rule 246 (enum-name)] "import" [reduce using rule 696 (template-name)] "import" [reduce using rule 731 (typedef-name)] "namespace" reduce using rule 137 (class-name) "namespace" [reduce using rule 246 (enum-name)] "namespace" [reduce using rule 696 (template-name)] "namespace" [reduce using rule 731 (typedef-name)] "requires" reduce using rule 137 (class-name) "requires" [reduce using rule 246 (enum-name)] "requires" [reduce using rule 696 (template-name)] "requires" [reduce using rule 731 (typedef-name)] "~" reduce using rule 137 (class-name) "~" [reduce using rule 246 (enum-name)] "~" [reduce using rule 696 (template-name)] "~" [reduce using rule 731 (typedef-name)] "++" reduce using rule 137 (class-name) "++" [reduce using rule 246 (enum-name)] "++" [reduce using rule 696 (template-name)] "++" [reduce using rule 731 (typedef-name)] "--" reduce using rule 137 (class-name) "--" [reduce using rule 246 (enum-name)] "--" [reduce using rule 696 (template-name)] "--" [reduce using rule 731 (typedef-name)] "auto" reduce using rule 137 (class-name) "auto" [reduce using rule 151 (concept-name)] "auto" [reduce using rule 246 (enum-name)] "auto" [reduce using rule 696 (template-name)] "auto" [reduce using rule 731 (typedef-name)] "char" reduce using rule 137 (class-name) "char" [reduce using rule 246 (enum-name)] "char" [reduce using rule 696 (template-name)] "char" [reduce using rule 731 (typedef-name)] "char8_t" reduce using rule 137 (class-name) "char8_t" [reduce using rule 246 (enum-name)] "char8_t" [reduce using rule 696 (template-name)] "char8_t" [reduce using rule 731 (typedef-name)] "char16_t" reduce using rule 137 (class-name) "char16_t" [reduce using rule 246 (enum-name)] "char16_t" [reduce using rule 696 (template-name)] "char16_t" [reduce using rule 731 (typedef-name)] "char32_t" reduce using rule 137 (class-name) "char32_t" [reduce using rule 246 (enum-name)] "char32_t" [reduce using rule 696 (template-name)] "char32_t" [reduce using rule 731 (typedef-name)] "wchar_t" reduce using rule 137 (class-name) "wchar_t" [reduce using rule 246 (enum-name)] "wchar_t" [reduce using rule 696 (template-name)] "wchar_t" [reduce using rule 731 (typedef-name)] "bool" reduce using rule 137 (class-name) "bool" [reduce using rule 246 (enum-name)] "bool" [reduce using rule 696 (template-name)] "bool" [reduce using rule 731 (typedef-name)] "short" reduce using rule 137 (class-name) "short" [reduce using rule 246 (enum-name)] "short" [reduce using rule 696 (template-name)] "short" [reduce using rule 731 (typedef-name)] "int" reduce using rule 137 (class-name) "int" [reduce using rule 246 (enum-name)] "int" [reduce using rule 696 (template-name)] "int" [reduce using rule 731 (typedef-name)] "long" reduce using rule 137 (class-name) "long" [reduce using rule 246 (enum-name)] "long" [reduce using rule 696 (template-name)] "long" [reduce using rule 731 (typedef-name)] "signed" reduce using rule 137 (class-name) "signed" [reduce using rule 246 (enum-name)] "signed" [reduce using rule 696 (template-name)] "signed" [reduce using rule 731 (typedef-name)] "unsigned" reduce using rule 137 (class-name) "unsigned" [reduce using rule 246 (enum-name)] "unsigned" [reduce using rule 696 (template-name)] "unsigned" [reduce using rule 731 (typedef-name)] "float" reduce using rule 137 (class-name) "float" [reduce using rule 246 (enum-name)] "float" [reduce using rule 696 (template-name)] "float" [reduce using rule 731 (typedef-name)] "double" reduce using rule 137 (class-name) "double" [reduce using rule 246 (enum-name)] "double" [reduce using rule 696 (template-name)] "double" [reduce using rule 731 (typedef-name)] "void" reduce using rule 137 (class-name) "void" [reduce using rule 246 (enum-name)] "void" [reduce using rule 696 (template-name)] "void" [reduce using rule 731 (typedef-name)] "static_assert" reduce using rule 137 (class-name) "static_assert" [reduce using rule 246 (enum-name)] "static_assert" [reduce using rule 696 (template-name)] "static_assert" [reduce using rule 731 (typedef-name)] "static" reduce using rule 137 (class-name) "static" [reduce using rule 246 (enum-name)] "static" [reduce using rule 696 (template-name)] "static" [reduce using rule 731 (typedef-name)] "thread_local" reduce using rule 137 (class-name) "thread_local" [reduce using rule 246 (enum-name)] "thread_local" [reduce using rule 696 (template-name)] "thread_local" [reduce using rule 731 (typedef-name)] "mutable" reduce using rule 137 (class-name) "mutable" [reduce using rule 246 (enum-name)] "mutable" [reduce using rule 696 (template-name)] "mutable" [reduce using rule 731 (typedef-name)] "override" reduce using rule 137 (class-name) "override" [reduce using rule 246 (enum-name)] "override" [reduce using rule 696 (template-name)] "override" [reduce using rule 731 (typedef-name)] $default reduce using rule 137 (class-name)

State 201

708 type-constraintnested-name-specifier-opt concept-name [",", "...", IDENTIFIER, "=", ";", "decltype", ">", "auto"] 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" "<" shift, and go to state 402 $default reduce using rule 708 (type-constraint)

State 202

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" 649 simple-type-specifiernested-name-specifier-opt template-name [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 207 "<" [reduce using rule 649 (simple-type-specifier)] $default reduce using rule 649 (simple-type-specifier)

State 203

645 simple-type-specifiernested-name-specifier-opt type-name $default reduce using rule 645 (simple-type-specifier)

State 204

150 concept-definition"concept" concept-name "=" constraint-expression ";" 151 concept-name IDENTIFIER IDENTIFIER shift, and go to state 403 concept-name go to state 404

State 205

691 template-declarationtemplate-head concept-definition $default reduce using rule 691 (template-declaration)

State 206

690 template-declarationtemplate-head declaration $default reduce using rule 690 (template-declaration)

State 207

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 644 | template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 406 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 407 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-argument go to state 409 template-argument-list go to state 410 template-argument-list-opt go to state 411 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 412 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 208

0 $accepttranslation-unit $end $default accept

State 209

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" "(" shift, and go to state 416

State 210

554 placeholder-type-specifiertype-constraint-opt "auto" $default reduce using rule 554 (placeholder-type-specifier)

State 211

453 nested-name-specifiertype-name "::" $default reduce using rule 453 (nested-name-specifier)

State 212

271 export-declaration"export" "{" declaration-seq-opt "}" "}" shift, and go to state 417

State 213

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 390 | "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 418 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 214

391 linkage-specification"extern" string-literal declaration $default reduce using rule 391 (linkage-specification)

State 215

692 template-head"template" "<" template-parameter-list ">" requires-clause-opt "<" shift, and go to state 419

State 216

723 type-parameter-key"typename" $default reduce using rule 723 (type-parameter-key)

State 217

722 type-parameter-key"class" $default reduce using rule 722 (type-parameter-key)

State 218

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 265 | "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 420 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 219

23 THIS-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 24 | "this" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause "this" shift, and go to state 421 "alignas" shift, and go to state 157 "[" shift, and go to state 161 $default reduce using rule 23 (THIS-opt) THIS-opt go to state 422 alignment-specifier go to state 165 attribute-specifier go to state 166

State 220

151 concept-name IDENTIFIER 708 type-constraintnested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" IDENTIFIER shift, and go to state 403 concept-name go to state 201

State 221

698 template-parameterparameter-declaration $default reduce using rule 698 (template-parameter)

State 222

720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" "typename" shift, and go to state 216 "class" shift, and go to state 217 type-parameter-key go to state 423

State 223

699 template-parameter-listtemplate-parameter $default reduce using rule 699 (template-parameter-list)

State 224

692 template-head"template" "<" template-parameter-list ">" requires-clause-opt 700 template-parameter-listtemplate-parameter-list "," template-parameter "," shift, and go to state 424 ">" shift, and go to state 425

State 225

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 718 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 426 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 427 IDENTIFIER-opt go to state 428

State 226

697 template-parametertype-parameter $default reduce using rule 697 (template-parameter)

State 227

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 426 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 429 IDENTIFIER-opt go to state 430

State 228

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 733 typename-specifier"typename" nested-name-specifier IDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 399 "::" [reduce using rule 733 (typename-specifier)] $default reduce using rule 733 (typename-specifier)

State 229

22 TEMPLATE-opt"template" $default reduce using rule 22 (TEMPLATE-opt)

State 230

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 734 typename-specifier"typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 191 simple-template-id go to state 431 template-name go to state 102

State 231

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier "=" shift, and go to state 432 "alignas" shift, and go to state 157 "[" shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166

State 232

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 169 conversion-function-id "operator" conversion-type-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 433 "template" shift, and go to state 229 "operator" shift, and go to state 248 "~" shift, and go to state 335 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 199 conversion-function-id go to state 272 literal-operator-id go to state 282 operator-function-id go to state 289 simple-template-id go to state 434 template-id go to state 300 template-name go to state 102 unqualified-id go to state 435

State 233

768 using-enum-declaration"using" elaborated-enum-specifier ";" $default reduce using rule 768 (using-enum-declaration)

State 234

765 using-declarator-listusing-declarator ELLIPSIS-opt $default reduce using rule 765 (using-declarator-list)

State 235

25 TYPENAME-opt %empty [IDENTIFIER, "::", "decltype"] 26 | "typename" 764 using-declarator TYPENAME-opt nested-name-specifier unqualified-id 766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "typename" shift, and go to state 123 $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 125 using-declarator go to state 436

State 236

763 using-declaration"using" using-declarator-list ";" $default reduce using rule 763 (using-declaration)

State 237

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] 755 unqualified-idIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "::" [reduce using rule 755 (unqualified-id)] "<" reduce using rule 696 (template-name) "<" [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)

State 238

477 noexcept-expression"noexcept" "(" expression ")" "(" shift, and go to state 437

State 239

752 unary-operator"!" $default reduce using rule 752 (unary-operator)

State 240

20 SCOPE-opt"::" ["delete", "new"] 452 nested-name-specifier"::" [IDENTIFIER, "template", "operator", "~"] "delete" reduce using rule 20 (SCOPE-opt) "new" reduce using rule 20 (SCOPE-opt) $default reduce using rule 452 (nested-name-specifier)

State 241

578 primary-expression"this" $default reduce using rule 578 (primary-expression)

State 242

750 unary-operator"+" $default reduce using rule 750 (unary-operator)

State 243

751 unary-operator"-" $default reduce using rule 751 (unary-operator)

State 244

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 438 IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 439 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 440 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 441 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 245

749 unary-operator"&" $default reduce using rule 749 (unary-operator)

State 246

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 125 capture-default "&" 126 | "=" 127 capture-list capture 128 | capture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture capture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt %empty ["]"] 383 | lambda-capture 388 lambda-introducer"[" lambda-capture-opt "]" 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 155 IDENTIFIER shift, and go to state 442 "this" shift, and go to state 443 "=" shift, and go to state 444 "&" shift, and go to state 445 "*" shift, and go to state 446 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 382 (lambda-capture-opt) ELLIPSIS-opt go to state 447 capture go to state 448 capture-default go to state 449 capture-list go to state 450 init-capture go to state 451 lambda-capture go to state 452 lambda-capture-opt go to state 453 simple-capture go to state 454

State 247

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 90 | "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 455 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 248

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id"operator" conversion-type-id 170 conversion-type-id type-specifier-seq conversion-declarator-opt 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 392 literal-operator-id"operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 497 operator-function-id"operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 499 overloadable-operator "new" 500 | "delete" 501 | "new" "[" "]" 502 | "delete" "[" "]" 503 | "co_await" 504 | "(" ")" 505 | "[" "]" 506 | "->" 507 | "->*" 508 | "~" 509 | "!" 510 | "+" 511 | "-" 512 | "*" 513 | "/" 514 | "%" 515 | "^" 516 | "&" 517 | "|" 518 | "=" 519 | "+=" 520 | "-=" 521 | "*=" 522 | "/=" 523 | "%=" 524 | "^=" 525 | "&=" 526 | "|=" 527 | "==" 528 | "!=" 529 | "<" 530 | ">" 531 | "<=" 532 | ">=" 533 | "<=>" 534 | "&&" 535 | "||" 536 | "<<" 537 | ">>" 538 | "<<=" 539 | ">>=" 540 | "++" 541 | "--" 542 | "," 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 762 user-defined-string-literal string-literal ud-suffix "," shift, and go to state 456 IDENTIFIER shift, and go to state 4 "!" shift, and go to state 457 "::" shift, and go to state 6 "typename" shift, and go to state 8 "+" shift, and go to state 458 "-" shift, and go to state 459 "=" shift, and go to state 460 "(" shift, and go to state 461 "&" shift, and go to state 462 "*=" shift, and go to state 463 "/=" shift, and go to state 464 "%=" shift, and go to state 465 "+=" shift, and go to state 466 "-=" shift, and go to state 467 ">>=" shift, and go to state 468 "<<=" shift, and go to state 469 "&=" shift, and go to state 470 "^=" shift, and go to state 471 "|=" shift, and go to state 472 "[" shift, and go to state 473 "co_await" shift, and go to state 474 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "<=>" shift, and go to state 475 "&&" shift, and go to state 476 "||" shift, and go to state 477 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "->" shift, and go to state 478 "delete" shift, and go to state 479 "enum" shift, and go to state 124 "==" shift, and go to state 480 "!=" shift, and go to state 481 "^" shift, and go to state 482 "<" shift, and go to state 483 ">" shift, and go to state 484 "*" shift, and go to state 485 "/" shift, and go to state 486 "%" shift, and go to state 487 "|" shift, and go to state 488 "<<" shift, and go to state 489 ">>" shift, and go to state 490 "<=" shift, and go to state 491 ">=" shift, and go to state 492 "->*" shift, and go to state 493 "new" shift, and go to state 494 "~" shift, and go to state 495 "++" shift, and go to state 496 "--" shift, and go to state 497 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 conversion-type-id go to state 498 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 overloadable-operator go to state 499 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 string-literal go to state 500 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 501 typedef-name go to state 108 typename-specifier go to state 109 user-defined-string-literal go to state 502

State 249

748 unary-operator"*" $default reduce using rule 748 (unary-operator)

State 250

616 requirement-parameter-list "(" parameter-declaration-clause ")" 617 requirement-parameter-list-opt %empty ["{"] 618 | requirement-parameter-list 624 requires-expression"requires" requirement-parameter-list-opt requirement-body "(" shift, and go to state 503 $default reduce using rule 617 (requirement-parameter-list-opt) requirement-parameter-list go to state 504 requirement-parameter-list-opt go to state 505

State 251

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 753 unary-operator"~" [IDENTIFIER, "noexcept", "!", "::", "this", "typename", "+", "-", "(", "&", "[", "co_await", "operator", "decltype", "delete", "*", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", STRING_LITERAL, "sizeof", "alignof"] 759 unqualified-id"~" type-name 760 | "~" decltype-specifier IDENTIFIER shift, and go to state 506 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 753 (unary-operator)] "decltype" [reduce using rule 753 (unary-operator)] $default reduce using rule 753 (unary-operator) class-name go to state 55 decltype-specifier go to state 507 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 508 typedef-name go to state 108

State 252

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 509 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 253

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 510 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 254

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 511

State 255

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 512

State 256

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 513

State 257

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 514

State 258

574 postfix-expression"typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" "(" shift, and go to state 515

State 259

576 primary-expression"literal" $default reduce using rule 576 (primary-expression)

State 260

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt %empty [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 55 | assignment-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 701 | "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 54 (assignment-expression-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 516 assignment-expression-opt go to state 517 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 261

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id "..." shift, and go to state 518 IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 519 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 520 unary-operator go to state 304 unqualified-id go to state 305

State 262

744 unary-expression"alignof" "(" type-id ")" "(" shift, and go to state 521

State 263

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 775 | "co_yield" assignment-expression 776 | "co_yield" braced-init-list 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 522 await-expression go to state 268 braced-init-list go to state 523 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 264

222 delete-expressionSCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt "delete" shift, and go to state 524 "new" shift, and go to state 525

State 265

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 633 shift-expressionadditive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 526 "-" shift, and go to state 527 $default reduce using rule 633 (shift-expression)

State 266

48 and-expressionand-expression "&" equality-expression 262 exclusive-or-expressionand-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] "&" shift, and go to state 528 $default reduce using rule 262 (exclusive-or-expression)

State 267

277 expressionassignment-expression $default reduce using rule 277 (expression)

State 268

740 unary-expressionawait-expression $default reduce using rule 740 (unary-expression)

State 269

556 pm-expressioncast-expression $default reduce using rule 556 (pm-expression)

State 270

147 compare-expressioncompare-expression "<=>" shift-expression 606 relational-expressioncompare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 529 $default reduce using rule 606 (relational-expression)

State 271

50 assignment-expressionconditional-expression $default reduce using rule 50 (assignment-expression)

State 272

757 unqualified-idconversion-function-id $default reduce using rule 757 (unqualified-id)

State 273

747 unary-expressiondelete-expression $default reduce using rule 747 (unary-expression)

State 274

47 and-expressionequality-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] 257 equality-expressionequality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression "==" shift, and go to state 530 "!=" shift, and go to state 531 $default reduce using rule 47 (and-expression)

State 275

263 exclusive-or-expressionexclusive-or-expression "^" and-expression 344 inclusive-or-expressionexclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">", "|"] "^" shift, and go to state 532 $default reduce using rule 344 (inclusive-or-expression)

State 276

214 decltype-specifier"decltype" "(" expression ")" 278 expressionexpression "," assignment-expression "," shift, and go to state 533 ")" shift, and go to state 534

State 277

582 primary-expressionfold-expression $default reduce using rule 582 (primary-expression)

State 278

580 primary-expressionid-expression $default reduce using rule 580 (primary-expression)

State 279

345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 394 logical-and-expressioninclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">"] "|" shift, and go to state 535 $default reduce using rule 394 (logical-and-expression)

State 280

581 primary-expressionlambda-expression $default reduce using rule 581 (primary-expression)

State 281

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 384 lambda-declarator lambda-specifiers 385 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 386 lambda-expressionlambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 389 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "(" shift, and go to state 536 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "<" shift, and go to state 537 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 538 decl-specifier-seq-opt go to state 539 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 lambda-declarator go to state 540 lambda-specifiers go to state 541 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 282

695 template-idliteral-operator-id "<" template-argument-list-opt ">" 758 unqualified-idliteral-operator-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 542 "<" [reduce using rule 758 (unqualified-id)] $default reduce using rule 758 (unqualified-id)

State 283

395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 396 logical-or-expressionlogical-and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "||", ">"] "&&" shift, and go to state 543 $default reduce using rule 396 (logical-or-expression)

State 284

53 assignment-expressionlogical-or-expression assignment-operator initializer-clause 56 assignment-operator "=" 57 | "*=" 58 | "/=" 59 | "%=" 60 | "+=" 61 | "-=" 62 | ">>=" 63 | "<<=" 64 | "&=" 65 | "^=" 66 | "|=" 156 conditional-expressionlogical-or-expression [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 157 | logical-or-expression "?" expression ":" assignment-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression "=" shift, and go to state 544 "*=" shift, and go to state 545 "/=" shift, and go to state 546 "%=" shift, and go to state 547 "+=" shift, and go to state 548 "-=" shift, and go to state 549 ">>=" shift, and go to state 550 "<<=" shift, and go to state 551 "&=" shift, and go to state 552 "^=" shift, and go to state 553 "|=" shift, and go to state 554 "?" shift, and go to state 555 "||" shift, and go to state 556 "=" [reduce using rule 156 (conditional-expression)] $default reduce using rule 156 (conditional-expression) assignment-operator go to state 557

State 285

41 additive-expressionmultiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression "*" shift, and go to state 558 "/" shift, and go to state 559 "%" shift, and go to state 560 $default reduce using rule 41 (additive-expression)

State 286

21 TEMPLATE-opt %empty [IDENTIFIER, "operator", "~"] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 646 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 197 "template" shift, and go to state 198 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 561

State 287

746 unary-expressionnew-expression $default reduce using rule 746 (unary-expression)

State 288

745 unary-expressionnoexcept-expression $default reduce using rule 745 (unary-expression)

State 289

694 template-idoperator-function-id "<" template-argument-list-opt ">" 756 unqualified-idoperator-function-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 562 "<" [reduce using rule 756 (unqualified-id)] $default reduce using rule 756 (unqualified-id)

State 290

439 multiplicative-expressionpm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 563 "->*" shift, and go to state 564 $default reduce using rule 439 (multiplicative-expression)

State 291

560 postfix-expressionpostfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 736 unary-expressionpostfix-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "(" shift, and go to state 565 "[" shift, and go to state 566 "->" shift, and go to state 567 "." shift, and go to state 568 "++" shift, and go to state 569 "--" shift, and go to state 570 $default reduce using rule 736 (unary-expression)

State 292

559 postfix-expressionprimary-expression $default reduce using rule 559 (postfix-expression)

State 293

341 id-expressionqualified-id $default reduce using rule 341 (id-expression)

State 294

256 equality-expressionrelational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", ">", "|"] 607 relational-expressionrelational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression "<" shift, and go to state 571 ">" shift, and go to state 572 "<=" shift, and go to state 573 ">=" shift, and go to state 574 ">" [reduce using rule 256 (equality-expression)] $default reduce using rule 256 (equality-expression)

State 295

583 primary-expressionrequires-expression $default reduce using rule 583 (primary-expression)

State 296

146 compare-expressionshift-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] 634 shift-expressionshift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression "<<" shift, and go to state 575 ">>" shift, and go to state 576 $default reduce using rule 146 (compare-expression)

State 297

138 class-namesimple-template-id ["::"] 693 template-idsimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 732 typedef-namesimple-template-id ["::"] "::" reduce using rule 138 (class-name) "::" [reduce using rule 693 (template-id)] "::" [reduce using rule 732 (typedef-name)] $default reduce using rule 693 (template-id)

State 298

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list "(" shift, and go to state 577 "{" shift, and go to state 379 braced-init-list go to state 578

State 299

577 primary-expressionstring-literal $default reduce using rule 577 (primary-expression)

State 300

761 unqualified-idtemplate-id $default reduce using rule 761 (unqualified-id)

State 301

52 assignment-expressionthrow-expression $default reduce using rule 52 (assignment-expression)

State 302

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 563 postfix-expressiontypename-specifier "(" expression-list-opt ")" 565 | typename-specifier braced-init-list "(" shift, and go to state 579 "{" shift, and go to state 379 braced-init-list go to state 580

State 303

129 cast-expressionunary-expression $default reduce using rule 129 (cast-expression)

State 304

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 581 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 305

340 id-expressionunqualified-id $default reduce using rule 340 (id-expression)

State 306

51 assignment-expressionyield-expression $default reduce using rule 51 (assignment-expression)

State 307

228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER $default reduce using rule 228 (elaborated-enum-specifier)

State 308

158 constant-expressionconditional-expression $default reduce using rule 158 (constant-expression)

State 309

266 explicit-specifier"explicit" "(" constant-expression ")" ")" shift, and go to state 582

State 310

156 conditional-expressionlogical-or-expression [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 157 | logical-or-expression "?" expression ":" assignment-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression "?" shift, and go to state 555 "||" shift, and go to state 556 $default reduce using rule 156 (conditional-expression)

State 311

332 global-module-fragment"module" ";" declaration-seq-opt $default reduce using rule 332 (global-module-fragment)

State 312

432 module-name-qualifierIDENTIFIER "." $default reduce using rule 432 (module-name-qualifier)

State 313

436 module-partition":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 583

State 314

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 430 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" ";" shift, and go to state 584 "alignas" shift, and go to state 157 "[" shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166

State 315

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" ";" shift, and go to state 585 "alignas" shift, and go to state 157 "[" shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166

State 316

433 module-name-qualifiermodule-name-qualifier IDENTIFIER "." "." shift, and go to state 586

State 317

431 module-namemodule-name-qualifier-opt IDENTIFIER $default reduce using rule 431 (module-name)

State 318

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 429 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" ";" shift, and go to state 587 "alignas" shift, and go to state 157 "[" shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166

State 319

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 601 qualified-namespace-specifier nested-name-specifier-opt namespace-name 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 588 qualified-namespace-specifier go to state 589 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 320

13 INLINE-opt %empty [IDENTIFIER] 14 | "inline" 235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "inline" shift, and go to state 590 $default reduce using rule 13 (INLINE-opt) INLINE-opt go to state 591

State 321

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" "," shift, and go to state 592 ")" shift, and go to state 593

State 322

264 explicit-instantiationEXTERN-opt "template" declaration $default reduce using rule 264 (explicit-instantiation)

State 323

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" IDENTIFIER shift, and go to state 594 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "{" shift, and go to state 595 alignment-specifier go to state 165 attribute-specifier go to state 166

State 324

351 init-declarator-listinit-declarator-list "," init-declarator 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" "," shift, and go to state 386 ";" shift, and go to state 596

State 325

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-name nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt %empty [":", "{"] 242 | enum-head-name 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 241 (enum-head-name-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-head-name go to state 597 enum-head-name-opt go to state 394 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 395 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 326

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 598 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 327

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 599 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 600 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 328

491 noptr-declaratornoptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 591 ptr-declaratornoptr-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" shift, and go to state 346 "[" shift, and go to state 347 "(" [reduce using rule 591 (ptr-declarator)] $default reduce using rule 591 (ptr-declarator) parameters-and-qualifiers go to state 601

State 329

493 noptr-declarator"(" ptr-declarator ")" ")" shift, and go to state 602

State 330

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 594 ptr-operator"&" attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "alignas" [reduce using rule 594 (ptr-operator)] "[" [reduce using rule 594 (ptr-operator)] $default reduce using rule 594 (ptr-operator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 331

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 682 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 117 string-literal go to state 603

State 332

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 87 attribute-using-prefix "using" attribute-namespace ":" 88 attribute-using-prefix-opt %empty [",", IDENTIFIER, "]"] 89 | attribute-using-prefix "using" shift, and go to state 604 $default reduce using rule 88 (attribute-using-prefix-opt) attribute-using-prefix go to state 605 attribute-using-prefix-opt go to state 606

State 333

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 595 ptr-operator"&&" attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "alignas" [reduce using rule 595 (ptr-operator)] "[" [reduce using rule 595 (ptr-operator)] $default reduce using rule 595 (ptr-operator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 334

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 179 | cv-qualifier-seq 593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt "alignas" shift, and go to state 157 "[" shift, and go to state 161 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "alignas" [reduce using rule 178 (cv-qualifier-seq-opt)] "[" [reduce using rule 178 (cv-qualifier-seq-opt)] "const" [reduce using rule 178 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 cv-qualifier go to state 607 cv-qualifier-seq go to state 608 cv-qualifier-seq-opt go to state 609

State 335

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 759 unqualified-id"~" type-name 760 | "~" decltype-specifier IDENTIFIER shift, and go to state 506 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 507 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 508 typedef-name go to state 108

State 336

213 declarator-idELLIPSIS-opt id-expression $default reduce using rule 213 (declarator-id)

State 337

21 TEMPLATE-opt %empty [IDENTIFIER, "operator", "~"] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id IDENTIFIER shift, and go to state 197 "template" shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 561

State 338

602 ref-qualifier"&" $default reduce using rule 602 (ref-qualifier)

State 339

603 ref-qualifier"&&" $default reduce using rule 603 (ref-qualifier)

State 340

605 ref-qualifier-optref-qualifier $default reduce using rule 605 (ref-qualifier-opt)

State 341

642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "[" shift, and go to state 610

State 342

327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 621 requires-clause "requires" constraint-logical-or-expression 769 virt-specifier "override" 770 | "final" 771 virt-specifier-seq virt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt %empty ["=", ":", "{", "try"] 774 | virt-specifier-seq "final" shift, and go to state 611 "requires" shift, and go to state 380 "override" shift, and go to state 612 $default reduce using rule 773 (virt-specifier-seq-opt) requires-clause go to state 613 virt-specifier go to state 614 virt-specifier-seq go to state 615 virt-specifier-seq-opt go to state 616

State 343

476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" $default reduce using rule 476 (nodeclspec-function-declaration)

State 344

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 490 noptr-declaratordeclarator-id attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 490 (noptr-declarator)] $default reduce using rule 490 (noptr-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 345

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 617

State 346

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 618 parameter-declaration-clause go to state 619 parameter-declaration-list go to state 620 parameter-declaration-list-opt go to state 621

State 347

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 159 constant-expression-opt %empty ["]"] 160 | constant-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 159 (constant-expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 622 constant-expression-opt go to state 623 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 348

212 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type 491 noptr-declaratornoptr-declarator parameters-and-qualifiers [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] 702 trailing-return-type "->" type-id "->" shift, and go to state 624 $default reduce using rule 491 (noptr-declarator) trailing-return-type go to state 625

State 349

592 ptr-declaratorptr-operator ptr-declarator $default reduce using rule 592 (ptr-declarator)

State 350

36 access-specifier"private" $default reduce using rule 36 (access-specifier)

State 351

37 access-specifier"protected" $default reduce using rule 37 (access-specifier)

State 352

38 access-specifier"public" $default reduce using rule 38 (access-specifier)

State 353

243 enum-key"enum" [IDENTIFIER, "::", "alignas", "[", "decltype"] 244 | "enum" "class" 245 | "enum" "struct" "class" shift, and go to state 130 "struct" shift, and go to state 131 $default reduce using rule 243 (enum-key)

State 354

424 member-specificationaccess-specifier ":" member-specification-opt ":" shift, and go to state 626

State 355

412 member-declarationalias-declaration $default reduce using rule 412 (member-declaration)

State 356

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["...", IDENTIFIER, "::", ";", "alignas", "(", "&", "[", ":", "&&", "operator", "decltype", "*", "~"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 191 (decl-specifier-seq-opt)] "alignas" [reduce using rule 191 (decl-specifier-seq-opt)] "[" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 538 decl-specifier-seq-opt go to state 627 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 357

411 member-declarationdeduction-guide $default reduce using rule 411 (member-declaration)

State 358

414 member-declarationempty-declaration $default reduce using rule 414 (member-declaration)

State 359

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 628

State 360

410 member-declarationexplicit-specialization $default reduce using rule 410 (member-declaration)

State 361

269 explicit-specifier-optexplicit-specifier $default reduce using rule 269 (explicit-specifier-opt)

State 362

405 member-declarationfunction-definition $default reduce using rule 405 (member-declaration)

State 363

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 233 empty-declaration ";" 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 423 member-specification member-declaration member-specification-opt 423 | member-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt %empty ["}"] 426 | member-specification 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 763 using-declaration "using" using-declarator-list ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 350 "protected" shift, and go to state 351 "public" shift, and go to state 352 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 353 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 425 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 354 alias-declaration go to state 355 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 356 deduction-guide go to state 357 empty-declaration go to state 358 enum-key go to state 359 explicit-specialization go to state 360 explicit-specifier go to state 361 explicit-specifier-opt go to state 76 function-definition go to state 362 member-declaration go to state 363 member-specification go to state 364 member-specification-opt go to state 629 opaque-enum-declaration go to state 366 static_assert-declaration go to state 367 template-declaration go to state 368 template-head go to state 101 using-declaration go to state 369 using-enum-declaration go to state 370

State 364

426 member-specification-optmember-specification $default reduce using rule 426 (member-specification-opt)

State 365

142 class-specifierclass-head "{" member-specification-opt "}" "}" shift, and go to state 630

State 366

413 member-declarationopaque-enum-declaration $default reduce using rule 413 (member-declaration)

State 367

408 member-declarationstatic_assert-declaration $default reduce using rule 408 (member-declaration)

State 368

409 member-declarationtemplate-declaration $default reduce using rule 409 (member-declaration)

State 369

406 member-declarationusing-declaration $default reduce using rule 406 (member-declaration)

State 370

407 member-declarationusing-enum-declaration $default reduce using rule 407 (member-declaration)

State 371

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 99 base-clause":" base-specifier-list 102 base-specifier attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-list base-specifier ELLIPSIS-opt 106 | base-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 631 base-specifier go to state 632 base-specifier-list go to state 633

State 372

101 base-clause-optbase-clause $default reduce using rule 101 (base-clause-opt)

State 373

132 class-headclass-key attribute-specifier-seq-opt base-clause-opt $default reduce using rule 132 (class-head)

State 374

131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 143 class-virt-specifier "final" 144 class-virt-specifier-opt %empty [":", "{"] 145 | class-virt-specifier "final" shift, and go to state 634 $default reduce using rule 144 (class-virt-specifier-opt) class-virt-specifier go to state 635 class-virt-specifier-opt go to state 636

State 375

133 class-head-namenested-name-specifier-opt class-name 137 class-name IDENTIFIER 138 | simple-template-id 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 637 class-name go to state 638 simple-template-id go to state 639 template-name go to state 102

State 376

231 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id 457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 191 simple-template-id go to state 640 template-name go to state 102

State 377

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 brace-or-equal-initializer"=" initializer-clause 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 643 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 378

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 360 initializer"(" expression-list ")" 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 644 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 379

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 120 | "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 224 designated-initializer-clause designator brace-or-equal-initializer 225 designated-initializer-list designated-initializer-clause 226 | designated-initializer-list "," designated-initializer-clause 227 designator "." IDENTIFIER 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "}" shift, and go to state 647 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "." shift, and go to state 648 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 designated-initializer-clause go to state 649 designated-initializer-list go to state 650 designator go to state 651 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 652 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 380

137 class-name IDENTIFIER 138 | simple-template-id 162 constraint-logical-and-expression primary-expression 163 | constraint-logical-and-expression "&&" primary-expression 164 constraint-logical-or-expression constraint-logical-and-expression 165 | constraint-logical-or-expression "||" constraint-logical-and-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 621 requires-clause"requires" constraint-logical-or-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "this" shift, and go to state 241 "(" shift, and go to state 653 "[" shift, and go to state 246 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "requires" shift, and go to state 250 "~" shift, and go to state 335 "literal" shift, and go to state 259 STRING_LITERAL shift, and go to state 117 class-name go to state 55 constraint-logical-and-expression go to state 654 constraint-logical-or-expression go to state 655 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 primary-expression go to state 656 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 381

359 initializerbrace-or-equal-initializer $default reduce using rule 359 (initializer)

State 382

117 brace-or-equal-initializerbraced-init-list $default reduce using rule 117 (brace-or-equal-initializer)

State 383

366 initializer-optinitializer $default reduce using rule 366 (initializer-opt)

State 384

348 init-declaratordeclarator initializer-opt $default reduce using rule 348 (init-declarator)

State 385

349 init-declaratordeclarator requires-clause $default reduce using rule 349 (init-declarator)

State 386

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 348 init-declarator declarator initializer-opt 349 | declarator requires-clause 351 init-declarator-listinit-declarator-list "," init-declarator 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 182 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 init-declarator go to state 657 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 387

640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" $default reduce using rule 640 (simple-declaration)

State 388

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 249 enumeratorIDENTIFIER attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 658

State 389

250 enumerator-definitionenumerator [",", "}"] 251 | enumerator "=" constant-expression "=" shift, and go to state 659 $default reduce using rule 250 (enumerator-definition)

State 390

252 enumerator-listenumerator-definition $default reduce using rule 252 (enumerator-list)

State 391

248 enum-specifierenum-head "{" enumerator-list "," "}" 253 enumerator-listenumerator-list "," enumerator-definition 255 enumerator-list-optenumerator-list ["}"] "," shift, and go to state 660 $default reduce using rule 255 (enumerator-list-opt)

State 392

247 enum-specifierenum-head "{" enumerator-list-opt "}" "}" shift, and go to state 661

State 393

236 enum-base ":" type-specifier-seq 237 enum-base-opt %empty [";"] 238 | enum-base 242 enum-head-name-optenum-head-name [":", "{"] 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ":" shift, and go to state 662 ":" [reduce using rule 242 (enum-head-name-opt)] "{" reduce using rule 242 (enum-head-name-opt) $default reduce using rule 237 (enum-base-opt) enum-base go to state 663 enum-base-opt go to state 664

State 394

236 enum-base ":" type-specifier-seq 237 enum-base-opt %empty ["{"] 238 | enum-base 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt ":" shift, and go to state 662 $default reduce using rule 237 (enum-base-opt) enum-base go to state 663 enum-base-opt go to state 665

State 395

240 enum-head-namenested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 666

State 396

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 618 parameter-declaration-clause go to state 667 parameter-declaration-list go to state 620 parameter-declaration-list-opt go to state 621

State 397

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 431 module-name module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier IDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt %empty [IDENTIFIER] 435 | module-name-qualifier IDENTIFIER shift, and go to state 136 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] module-name go to state 668 module-name-qualifier go to state 141 module-name-qualifier-opt go to state 142

State 398

584 private-module-fragment "module" ":" "private" ";" declaration-seq-opt 585 private-module-fragment-opt %empty [$end] 586 | private-module-fragment 706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt "module" shift, and go to state 669 $default reduce using rule 585 (private-module-fragment-opt) private-module-fragment go to state 670 private-module-fragment-opt go to state 671

State 399

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" $default reduce using rule 456 (nested-name-specifier)

State 400

646 simple-type-specifiernested-name-specifier "template" simple-template-id $default reduce using rule 646 (simple-type-specifier)

State 401

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" "::" shift, and go to state 672

State 402

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 406 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 407 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-argument go to state 409 template-argument-list go to state 410 template-argument-list-opt go to state 673 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 412 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 403

151 concept-nameIDENTIFIER $default reduce using rule 151 (concept-name)

State 404

150 concept-definition"concept" concept-name "=" constraint-expression ";" "=" shift, and go to state 674

State 405

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "alignas", "[", "decltype"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 675 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 178 simple-template-id go to state 179 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 406

683 template-argumentconstant-expression $default reduce using rule 683 (template-argument)

State 407

580 primary-expressionid-expression [",", "...", "+", "-", "(", "&", "[", "<=>", "?", "&&", "||", "->", ".", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "++", "--"] 685 template-argumentid-expression [",", "...", ">"] "," reduce using rule 580 (primary-expression) "," [reduce using rule 685 (template-argument)] "..." reduce using rule 580 (primary-expression) "..." [reduce using rule 685 (template-argument)] ">" reduce using rule 580 (primary-expression) ">" [reduce using rule 685 (template-argument)] $default reduce using rule 580 (primary-expression)

State 408

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 725 type-specifiersimple-type-specifier [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", ")", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", ">", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 577 "{" shift, and go to state 379 "(" [reduce using rule 725 (type-specifier)] $default reduce using rule 725 (type-specifier) braced-init-list go to state 578

State 409

5 ELLIPSIS-opt %empty [",", ">"] 6 | "..." 686 template-argument-listtemplate-argument ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 676

State 410

687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt 689 template-argument-list-opttemplate-argument-list [">"] "," shift, and go to state 677 $default reduce using rule 689 (template-argument-list-opt)

State 411

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" ">" shift, and go to state 678

State 412

684 template-argumenttype-id $default reduce using rule 684 (template-argument)

State 413

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 84 | attribute-specifier-seq 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 729 | type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 679 class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 680 typedef-name go to state 108 typename-specifier go to state 109

State 414

29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 712 type-idtype-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 681 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 682 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "..." [reduce using rule 32 (abstract-declarator-opt)] "(" [reduce using rule 32 (abstract-declarator-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 683 abstract-declarator-opt go to state 684 abstract-pack-declarator go to state 685 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 687 noptr-abstract-pack-declarator go to state 688 ptr-abstract-declarator go to state 689 ptr-operator go to state 690 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 415

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 563 postfix-expressiontypename-specifier "(" expression-list-opt ")" 565 | typename-specifier braced-init-list 727 type-specifiertypename-specifier [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", ")", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", ">", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 579 "{" shift, and go to state 379 "(" [reduce using rule 727 (type-specifier)] $default reduce using rule 727 (type-specifier) braced-init-list go to state 580

State 416

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" "auto" shift, and go to state 691

State 417

271 export-declaration"export" "{" declaration-seq-opt "}" $default reduce using rule 271 (export-declaration)

State 418

390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" "}" shift, and go to state 692

State 419

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 692 | "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 699 template-parameter-list template-parameter 700 | template-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 215 "typename" shift, and go to state 216 "class" shift, and go to state 217 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 223 template-parameter-list go to state 224 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108

State 420

265 explicit-specialization"template" "<" ">" declaration $default reduce using rule 265 (explicit-specialization)

State 421

24 THIS-opt"this" $default reduce using rule 24 (THIS-opt)

State 422

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 693 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 423

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression "..." shift, and go to state 155 IDENTIFIER shift, and go to state 426 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 694 IDENTIFIER-opt go to state 695

State 424

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 700 template-parameter-listtemplate-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 215 "typename" shift, and go to state 216 "class" shift, and go to state 217 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 696 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108

State 425

621 requires-clause "requires" constraint-logical-or-expression 622 requires-clause-opt %empty ["constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "using", ";", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "concept", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 623 | requires-clause 692 template-head"template" "<" template-parameter-list ">" requires-clause-opt "requires" shift, and go to state 380 $default reduce using rule 622 (requires-clause-opt) requires-clause go to state 697 requires-clause-opt go to state 698

State 426

12 IDENTIFIER-optIDENTIFIER $default reduce using rule 12 (IDENTIFIER-opt)

State 427

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 718 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 426 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 699

State 428

719 type-parametertype-constraint IDENTIFIER-opt "=" type-id "=" shift, and go to state 700

State 429

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 426 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 701

State 430

717 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id "=" shift, and go to state 702

State 431

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 734 typename-specifier"typename" nested-name-specifier TEMPLATE-opt simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 672 "::" [reduce using rule 734 (typename-specifier)] $default reduce using rule 734 (typename-specifier)

State 432

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 216 defining-type-id defining-type-specifier-seq abstract-declarator-opt 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seq defining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-id go to state 703 defining-type-specifier go to state 704 defining-type-specifier-seq go to state 705 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 433

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 696 template-nameIDENTIFIER ["<"] 755 unqualified-idIDENTIFIER [",", "...", ";"] "::" shift, and go to state 399 "<" reduce using rule 696 (template-name) $default reduce using rule 755 (unqualified-id)

State 434

693 template-idsimple-template-id $default reduce using rule 693 (template-id)

State 435

764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id $default reduce using rule 764 (using-declarator)

State 436

5 ELLIPSIS-opt %empty [",", ";"] 6 | "..." 766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 706

State 437

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 477 | "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 707 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 438

286 fold-expression"(" "..." fold-operator cast-expression ")" 288 fold-operator "+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" "," shift, and go to state 708 "+" shift, and go to state 709 "-" shift, and go to state 710 "=" shift, and go to state 711 "&" shift, and go to state 712 "*=" shift, and go to state 713 "/=" shift, and go to state 714 "%=" shift, and go to state 715 "+=" shift, and go to state 716 "-=" shift, and go to state 717 ">>=" shift, and go to state 718 "<<=" shift, and go to state 719 "&=" shift, and go to state 720 "^=" shift, and go to state 721 "|=" shift, and go to state 722 "&&" shift, and go to state 723 "||" shift, and go to state 724 "==" shift, and go to state 725 "!=" shift, and go to state 726 "^" shift, and go to state 727 "<" shift, and go to state 728 ">" shift, and go to state 729 "*" shift, and go to state 730 "/" shift, and go to state 731 "%" shift, and go to state 732 "|" shift, and go to state 733 "<<" shift, and go to state 734 ">>" shift, and go to state 735 "<=" shift, and go to state 736 ">=" shift, and go to state 737 ".*" shift, and go to state 738 "->*" shift, and go to state 739 fold-operator go to state 740

State 439

285 fold-expression"(" cast-expression fold-operator "..." ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 288 fold-operator "+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" 556 pm-expressioncast-expression [",", "+", "-", "=", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "," shift, and go to state 708 "+" shift, and go to state 709 "-" shift, and go to state 710 "=" shift, and go to state 711 "&" shift, and go to state 712 "*=" shift, and go to state 713 "/=" shift, and go to state 714 "%=" shift, and go to state 715 "+=" shift, and go to state 716 "-=" shift, and go to state 717 ">>=" shift, and go to state 718 "<<=" shift, and go to state 719 "&=" shift, and go to state 720 "^=" shift, and go to state 721 "|=" shift, and go to state 722 "&&" shift, and go to state 723 "||" shift, and go to state 724 "==" shift, and go to state 725 "!=" shift, and go to state 726 "^" shift, and go to state 727 "<" shift, and go to state 728 ">" shift, and go to state 729 "*" shift, and go to state 730 "/" shift, and go to state 731 "%" shift, and go to state 732 "|" shift, and go to state 733 "<<" shift, and go to state 734 ">>" shift, and go to state 735 "<=" shift, and go to state 736 ">=" shift, and go to state 737 ".*" shift, and go to state 738 "->*" shift, and go to state 739 "," [reduce using rule 556 (pm-expression)] "+" [reduce using rule 556 (pm-expression)] "-" [reduce using rule 556 (pm-expression)] "=" [reduce using rule 556 (pm-expression)] "&" [reduce using rule 556 (pm-expression)] "*=" [reduce using rule 556 (pm-expression)] "/=" [reduce using rule 556 (pm-expression)] "%=" [reduce using rule 556 (pm-expression)] "+=" [reduce using rule 556 (pm-expression)] "-=" [reduce using rule 556 (pm-expression)] ">>=" [reduce using rule 556 (pm-expression)] "<<=" [reduce using rule 556 (pm-expression)] "&=" [reduce using rule 556 (pm-expression)] "^=" [reduce using rule 556 (pm-expression)] "|=" [reduce using rule 556 (pm-expression)] "&&" [reduce using rule 556 (pm-expression)] "||" [reduce using rule 556 (pm-expression)] "==" [reduce using rule 556 (pm-expression)] "!=" [reduce using rule 556 (pm-expression)] "^" [reduce using rule 556 (pm-expression)] "<" [reduce using rule 556 (pm-expression)] ">" [reduce using rule 556 (pm-expression)] "*" [reduce using rule 556 (pm-expression)] "/" [reduce using rule 556 (pm-expression)] "%" [reduce using rule 556 (pm-expression)] "|" [reduce using rule 556 (pm-expression)] "<<" [reduce using rule 556 (pm-expression)] ">>" [reduce using rule 556 (pm-expression)] "<=" [reduce using rule 556 (pm-expression)] ">=" [reduce using rule 556 (pm-expression)] ".*" [reduce using rule 556 (pm-expression)] "->*" [reduce using rule 556 (pm-expression)] $default reduce using rule 556 (pm-expression) fold-operator go to state 741

State 440

278 expressionexpression "," assignment-expression 579 primary-expression"(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 742

State 441

130 cast-expression"(" type-id ")" cast-expression ")" shift, and go to state 743

State 442

5 ELLIPSIS-opt %empty [",", "]"] 6 | "..." 636 simple-captureIDENTIFIER ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 744

State 443

638 simple-capture"this" $default reduce using rule 638 (simple-capture)

State 444

126 capture-default"=" $default reduce using rule 126 (capture-default)

State 445

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 125 capture-default"&" [",", "]"] 347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 637 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 155 IDENTIFIER shift, and go to state 745 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 125 (capture-default) ELLIPSIS-opt go to state 746

State 446

639 simple-capture"*" "this" "this" shift, and go to state 747

State 447

346 init-captureELLIPSIS-opt IDENTIFIER initializer IDENTIFIER shift, and go to state 748

State 448

127 capture-listcapture $default reduce using rule 127 (capture-list)

State 449

379 lambda-capturecapture-default ["]"] 381 | capture-default "," capture-list "," shift, and go to state 749 $default reduce using rule 379 (lambda-capture)

State 450

128 capture-listcapture-list "," capture 380 lambda-capturecapture-list ["]"] "," shift, and go to state 750 $default reduce using rule 380 (lambda-capture)

State 451

124 captureinit-capture $default reduce using rule 124 (capture)

State 452

383 lambda-capture-optlambda-capture $default reduce using rule 383 (lambda-capture-opt)

State 453

388 lambda-introducer"[" lambda-capture-opt "]" "]" shift, and go to state 751

State 454

123 capturesimple-capture $default reduce using rule 123 (capture)

State 455

90 await-expression"co_await" cast-expression $default reduce using rule 90 (await-expression)

State 456

542 overloadable-operator"," $default reduce using rule 542 (overloadable-operator)

State 457

509 overloadable-operator"!" $default reduce using rule 509 (overloadable-operator)

State 458

510 overloadable-operator"+" $default reduce using rule 510 (overloadable-operator)

State 459

511 overloadable-operator"-" $default reduce using rule 511 (overloadable-operator)

State 460

518 overloadable-operator"=" $default reduce using rule 518 (overloadable-operator)

State 461

504 overloadable-operator"(" ")" ")" shift, and go to state 752

State 462

516 overloadable-operator"&" $default reduce using rule 516 (overloadable-operator)

State 463

521 overloadable-operator"*=" $default reduce using rule 521 (overloadable-operator)

State 464

522 overloadable-operator"/=" $default reduce using rule 522 (overloadable-operator)

State 465

523 overloadable-operator"%=" $default reduce using rule 523 (overloadable-operator)

State 466

519 overloadable-operator"+=" $default reduce using rule 519 (overloadable-operator)

State 467

520 overloadable-operator"-=" $default reduce using rule 520 (overloadable-operator)

State 468

539 overloadable-operator">>=" $default reduce using rule 539 (overloadable-operator)

State 469

538 overloadable-operator"<<=" $default reduce using rule 538 (overloadable-operator)

State 470

525 overloadable-operator"&=" $default reduce using rule 525 (overloadable-operator)

State 471

524 overloadable-operator"^=" $default reduce using rule 524 (overloadable-operator)

State 472

526 overloadable-operator"|=" $default reduce using rule 526 (overloadable-operator)

State 473

505 overloadable-operator"[" "]" "]" shift, and go to state 753

State 474

503 overloadable-operator"co_await" $default reduce using rule 503 (overloadable-operator)

State 475

533 overloadable-operator"<=>" $default reduce using rule 533 (overloadable-operator)

State 476

534 overloadable-operator"&&" $default reduce using rule 534 (overloadable-operator)

State 477

535 overloadable-operator"||" $default reduce using rule 535 (overloadable-operator)

State 478

506 overloadable-operator"->" $default reduce using rule 506 (overloadable-operator)

State 479

500 overloadable-operator"delete" [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 502 | "delete" "[" "]" "[" shift, and go to state 754 "[" [reduce using rule 500 (overloadable-operator)] $default reduce using rule 500 (overloadable-operator)

State 480

527 overloadable-operator"==" $default reduce using rule 527 (overloadable-operator)

State 481

528 overloadable-operator"!=" $default reduce using rule 528 (overloadable-operator)

State 482

515 overloadable-operator"^" $default reduce using rule 515 (overloadable-operator)

State 483

529 overloadable-operator"<" $default reduce using rule 529 (overloadable-operator)

State 484

530 overloadable-operator">" $default reduce using rule 530 (overloadable-operator)

State 485

512 overloadable-operator"*" $default reduce using rule 512 (overloadable-operator)

State 486

513 overloadable-operator"/" $default reduce using rule 513 (overloadable-operator)

State 487

514 overloadable-operator"%" $default reduce using rule 514 (overloadable-operator)

State 488

517 overloadable-operator"|" $default reduce using rule 517 (overloadable-operator)

State 489

536 overloadable-operator"<<" $default reduce using rule 536 (overloadable-operator)

State 490

537 overloadable-operator">>" $default reduce using rule 537 (overloadable-operator)

State 491

531 overloadable-operator"<=" $default reduce using rule 531 (overloadable-operator)

State 492

532 overloadable-operator">=" $default reduce using rule 532 (overloadable-operator)

State 493

507 overloadable-operator"->*" $default reduce using rule 507 (overloadable-operator)

State 494

499 overloadable-operator"new" [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 501 | "new" "[" "]" "[" shift, and go to state 755 "[" [reduce using rule 499 (overloadable-operator)] $default reduce using rule 499 (overloadable-operator)

State 495

508 overloadable-operator"~" $default reduce using rule 508 (overloadable-operator)

State 496

540 overloadable-operator"++" $default reduce using rule 540 (overloadable-operator)

State 497

541 overloadable-operator"--" $default reduce using rule 541 (overloadable-operator)

State 498

169 conversion-function-id"operator" conversion-type-id $default reduce using rule 169 (conversion-function-id)

State 499

497 operator-function-id"operator" overloadable-operator [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" "<" shift, and go to state 756 "<" [reduce using rule 497 (operator-function-id)] $default reduce using rule 497 (operator-function-id)

State 500

392 literal-operator-id"operator" string-literal IDENTIFIER 735 ud-suffix IDENTIFIER 762 user-defined-string-literalstring-literal ud-suffix IDENTIFIER shift, and go to state 757 ud-suffix go to state 758

State 501

137 class-name IDENTIFIER 138 | simple-template-id 166 conversion-declarator ptr-operator conversion-declarator-opt 167 conversion-declarator-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 168 | conversion-declarator 170 conversion-type-idtype-specifier-seq conversion-declarator-opt 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 167 (conversion-declarator-opt)] "::" [reduce using rule 167 (conversion-declarator-opt)] "&" [reduce using rule 167 (conversion-declarator-opt)] "&&" [reduce using rule 167 (conversion-declarator-opt)] "decltype" [reduce using rule 167 (conversion-declarator-opt)] "*" [reduce using rule 167 (conversion-declarator-opt)] $default reduce using rule 167 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 759 conversion-declarator-opt go to state 760 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 ptr-operator go to state 761 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 502

393 literal-operator-id"operator" user-defined-string-literal $default reduce using rule 393 (literal-operator-id)

State 503

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list 616 requirement-parameter-list"(" parameter-declaration-clause ")" "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 618 parameter-declaration-clause go to state 762 parameter-declaration-list go to state 620 parameter-declaration-list-opt go to state 621

State 504

618 requirement-parameter-list-optrequirement-parameter-list $default reduce using rule 618 (requirement-parameter-list-opt)

State 505

615 requirement-body "{" requirement-seq "}" 624 requires-expression"requires" requirement-parameter-list-opt requirement-body "{" shift, and go to state 763 requirement-body go to state 764

State 506

137 class-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 246 enum-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 137 (class-name) "," [reduce using rule 246 (enum-name)] "," [reduce using rule 731 (typedef-name)] "constexpr" reduce using rule 137 (class-name) "constexpr" [reduce using rule 246 (enum-name)] "constexpr" [reduce using rule 731 (typedef-name)] "..." reduce using rule 137 (class-name) "..." [reduce using rule 246 (enum-name)] "..." [reduce using rule 731 (typedef-name)] "export" reduce using rule 137 (class-name) "export" [reduce using rule 246 (enum-name)] "export" [reduce using rule 731 (typedef-name)] "extern" reduce using rule 137 (class-name) "extern" [reduce using rule 246 (enum-name)] "extern" [reduce using rule 731 (typedef-name)] IDENTIFIER reduce using rule 137 (class-name) IDENTIFIER [reduce using rule 246 (enum-name)] IDENTIFIER [reduce using rule 731 (typedef-name)] "inline" reduce using rule 137 (class-name) "inline" [reduce using rule 246 (enum-name)] "inline" [reduce using rule 731 (typedef-name)] "noexcept" reduce using rule 137 (class-name) "noexcept" [reduce using rule 246 (enum-name)] "noexcept" [reduce using rule 731 (typedef-name)] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 731 (typedef-name)] "template" reduce using rule 137 (class-name) "template" [reduce using rule 246 (enum-name)] "template" [reduce using rule 731 (typedef-name)] "typename" reduce using rule 137 (class-name) "typename" [reduce using rule 246 (enum-name)] "typename" [reduce using rule 731 (typedef-name)] "virtual" reduce using rule 137 (class-name) "virtual" [reduce using rule 246 (enum-name)] "virtual" [reduce using rule 731 (typedef-name)] "+" reduce using rule 137 (class-name) "+" [reduce using rule 246 (enum-name)] "+" [reduce using rule 731 (typedef-name)] "-" reduce using rule 137 (class-name) "-" [reduce using rule 246 (enum-name)] "-" [reduce using rule 731 (typedef-name)] "using" reduce using rule 137 (class-name) "using" [reduce using rule 246 (enum-name)] "using" [reduce using rule 731 (typedef-name)] "=" reduce using rule 137 (class-name) "=" [reduce using rule 246 (enum-name)] "=" [reduce using rule 731 (typedef-name)] ";" reduce using rule 137 (class-name) ";" [reduce using rule 246 (enum-name)] ";" [reduce using rule 731 (typedef-name)] "alignas" reduce using rule 137 (class-name) "alignas" [reduce using rule 246 (enum-name)] "alignas" [reduce using rule 731 (typedef-name)] "(" reduce using rule 137 (class-name) "(" [reduce using rule 246 (enum-name)] "(" [reduce using rule 731 (typedef-name)] ")" reduce using rule 137 (class-name) ")" [reduce using rule 246 (enum-name)] ")" [reduce using rule 731 (typedef-name)] "&" reduce using rule 137 (class-name) "&" [reduce using rule 246 (enum-name)] "&" [reduce using rule 731 (typedef-name)] "asm" reduce using rule 137 (class-name) "asm" [reduce using rule 246 (enum-name)] "asm" [reduce using rule 731 (typedef-name)] "*=" reduce using rule 137 (class-name) "*=" [reduce using rule 246 (enum-name)] "*=" [reduce using rule 731 (typedef-name)] "/=" reduce using rule 137 (class-name) "/=" [reduce using rule 246 (enum-name)] "/=" [reduce using rule 731 (typedef-name)] "%=" reduce using rule 137 (class-name) "%=" [reduce using rule 246 (enum-name)] "%=" [reduce using rule 731 (typedef-name)] "+=" reduce using rule 137 (class-name) "+=" [reduce using rule 246 (enum-name)] "+=" [reduce using rule 731 (typedef-name)] "-=" reduce using rule 137 (class-name) "-=" [reduce using rule 246 (enum-name)] "-=" [reduce using rule 731 (typedef-name)] ">>=" reduce using rule 137 (class-name) ">>=" [reduce using rule 246 (enum-name)] ">>=" [reduce using rule 731 (typedef-name)] "<<=" reduce using rule 137 (class-name) "<<=" [reduce using rule 246 (enum-name)] "<<=" [reduce using rule 731 (typedef-name)] "&=" reduce using rule 137 (class-name) "&=" [reduce using rule 246 (enum-name)] "&=" [reduce using rule 731 (typedef-name)] "^=" reduce using rule 137 (class-name) "^=" [reduce using rule 246 (enum-name)] "^=" [reduce using rule 731 (typedef-name)] "|=" reduce using rule 137 (class-name) "|=" [reduce using rule 246 (enum-name)] "|=" [reduce using rule 731 (typedef-name)] "[" reduce using rule 137 (class-name) "[" [reduce using rule 246 (enum-name)] "[" [reduce using rule 731 (typedef-name)] "]" reduce using rule 137 (class-name) "]" [reduce using rule 246 (enum-name)] "]" [reduce using rule 731 (typedef-name)] ":" reduce using rule 137 (class-name) ":" [reduce using rule 246 (enum-name)] ":" [reduce using rule 731 (typedef-name)] "{" reduce using rule 137 (class-name) "{" [reduce using rule 246 (enum-name)] "{" [reduce using rule 731 (typedef-name)] "}" reduce using rule 137 (class-name) "}" [reduce using rule 246 (enum-name)] "}" [reduce using rule 731 (typedef-name)] "class" reduce using rule 137 (class-name) "class" [reduce using rule 246 (enum-name)] "class" [reduce using rule 731 (typedef-name)] "struct" reduce using rule 137 (class-name) "struct" [reduce using rule 246 (enum-name)] "struct" [reduce using rule 731 (typedef-name)] "union" reduce using rule 137 (class-name) "union" [reduce using rule 246 (enum-name)] "union" [reduce using rule 731 (typedef-name)] "final" reduce using rule 137 (class-name) "final" [reduce using rule 246 (enum-name)] "final" [reduce using rule 731 (typedef-name)] "<=>" reduce using rule 137 (class-name) "<=>" [reduce using rule 246 (enum-name)] "<=>" [reduce using rule 731 (typedef-name)] "concept" reduce using rule 137 (class-name) "concept" [reduce using rule 246 (enum-name)] "concept" [reduce using rule 731 (typedef-name)] "?" reduce using rule 137 (class-name) "?" [reduce using rule 246 (enum-name)] "?" [reduce using rule 731 (typedef-name)] "&&" reduce using rule 137 (class-name) "&&" [reduce using rule 246 (enum-name)] "&&" [reduce using rule 731 (typedef-name)] "||" reduce using rule 137 (class-name) "||" [reduce using rule 246 (enum-name)] "||" [reduce using rule 731 (typedef-name)] "operator" reduce using rule 137 (class-name) "operator" [reduce using rule 246 (enum-name)] "operator" [reduce using rule 731 (typedef-name)] "const" reduce using rule 137 (class-name) "const" [reduce using rule 246 (enum-name)] "const" [reduce using rule 731 (typedef-name)] "volatile" reduce using rule 137 (class-name) "volatile" [reduce using rule 246 (enum-name)] "volatile" [reduce using rule 731 (typedef-name)] "friend" reduce using rule 137 (class-name) "friend" [reduce using rule 246 (enum-name)] "friend" [reduce using rule 731 (typedef-name)] "typedef" reduce using rule 137 (class-name) "typedef" [reduce using rule 246 (enum-name)] "typedef" [reduce using rule 731 (typedef-name)] "consteval" reduce using rule 137 (class-name) "consteval" [reduce using rule 246 (enum-name)] "consteval" [reduce using rule 731 (typedef-name)] "constinit" reduce using rule 137 (class-name) "constinit" [reduce using rule 246 (enum-name)] "constinit" [reduce using rule 731 (typedef-name)] "decltype" reduce using rule 137 (class-name) "decltype" [reduce using rule 246 (enum-name)] "decltype" [reduce using rule 731 (typedef-name)] "->" reduce using rule 137 (class-name) "->" [reduce using rule 246 (enum-name)] "->" [reduce using rule 731 (typedef-name)] "." reduce using rule 137 (class-name) "." [reduce using rule 246 (enum-name)] "." [reduce using rule 731 (typedef-name)] "enum" reduce using rule 137 (class-name) "enum" [reduce using rule 246 (enum-name)] "enum" [reduce using rule 731 (typedef-name)] "==" reduce using rule 137 (class-name) "==" [reduce using rule 246 (enum-name)] "==" [reduce using rule 731 (typedef-name)] "!=" reduce using rule 137 (class-name) "!=" [reduce using rule 246 (enum-name)] "!=" [reduce using rule 731 (typedef-name)] "^" reduce using rule 137 (class-name) "^" [reduce using rule 246 (enum-name)] "^" [reduce using rule 731 (typedef-name)] "<" reduce using rule 137 (class-name) "<" [reduce using rule 246 (enum-name)] "<" [reduce using rule 696 (template-name)] "<" [reduce using rule 731 (typedef-name)] ">" reduce using rule 137 (class-name) ">" [reduce using rule 246 (enum-name)] ">" [reduce using rule 731 (typedef-name)] "explicit" reduce using rule 137 (class-name) "explicit" [reduce using rule 246 (enum-name)] "explicit" [reduce using rule 731 (typedef-name)] "*" reduce using rule 137 (class-name) "*" [reduce using rule 246 (enum-name)] "*" [reduce using rule 731 (typedef-name)] "/" reduce using rule 137 (class-name) "/" [reduce using rule 246 (enum-name)] "/" [reduce using rule 731 (typedef-name)] "%" reduce using rule 137 (class-name) "%" [reduce using rule 246 (enum-name)] "%" [reduce using rule 731 (typedef-name)] "|" reduce using rule 137 (class-name) "|" [reduce using rule 246 (enum-name)] "|" [reduce using rule 731 (typedef-name)] "<<" reduce using rule 137 (class-name) "<<" [reduce using rule 246 (enum-name)] "<<" [reduce using rule 731 (typedef-name)] ">>" reduce using rule 137 (class-name) ">>" [reduce using rule 246 (enum-name)] ">>" [reduce using rule 731 (typedef-name)] "<=" reduce using rule 137 (class-name) "<=" [reduce using rule 246 (enum-name)] "<=" [reduce using rule 731 (typedef-name)] ">=" reduce using rule 137 (class-name) ">=" [reduce using rule 246 (enum-name)] ">=" [reduce using rule 731 (typedef-name)] ".*" reduce using rule 137 (class-name) ".*" [reduce using rule 246 (enum-name)] ".*" [reduce using rule 731 (typedef-name)] "->*" reduce using rule 137 (class-name) "->*" [reduce using rule 246 (enum-name)] "->*" [reduce using rule 731 (typedef-name)] "try" reduce using rule 137 (class-name) "try" [reduce using rule 246 (enum-name)] "try" [reduce using rule 731 (typedef-name)] "import" reduce using rule 137 (class-name) "import" [reduce using rule 246 (enum-name)] "import" [reduce using rule 731 (typedef-name)] "namespace" reduce using rule 137 (class-name) "namespace" [reduce using rule 246 (enum-name)] "namespace" [reduce using rule 731 (typedef-name)] "requires" reduce using rule 137 (class-name) "requires" [reduce using rule 246 (enum-name)] "requires" [reduce using rule 731 (typedef-name)] "~" reduce using rule 137 (class-name) "~" [reduce using rule 246 (enum-name)] "~" [reduce using rule 731 (typedef-name)] "++" reduce using rule 137 (class-name) "++" [reduce using rule 246 (enum-name)] "++" [reduce using rule 731 (typedef-name)] "--" reduce using rule 137 (class-name) "--" [reduce using rule 246 (enum-name)] "--" [reduce using rule 731 (typedef-name)] "auto" reduce using rule 137 (class-name) "auto" [reduce using rule 246 (enum-name)] "auto" [reduce using rule 731 (typedef-name)] "char" reduce using rule 137 (class-name) "char" [reduce using rule 246 (enum-name)] "char" [reduce using rule 731 (typedef-name)] "char8_t" reduce using rule 137 (class-name) "char8_t" [reduce using rule 246 (enum-name)] "char8_t" [reduce using rule 731 (typedef-name)] "char16_t" reduce using rule 137 (class-name) "char16_t" [reduce using rule 246 (enum-name)] "char16_t" [reduce using rule 731 (typedef-name)] "char32_t" reduce using rule 137 (class-name) "char32_t" [reduce using rule 246 (enum-name)] "char32_t" [reduce using rule 731 (typedef-name)] "wchar_t" reduce using rule 137 (class-name) "wchar_t" [reduce using rule 246 (enum-name)] "wchar_t" [reduce using rule 731 (typedef-name)] "bool" reduce using rule 137 (class-name) "bool" [reduce using rule 246 (enum-name)] "bool" [reduce using rule 731 (typedef-name)] "short" reduce using rule 137 (class-name) "short" [reduce using rule 246 (enum-name)] "short" [reduce using rule 731 (typedef-name)] "int" reduce using rule 137 (class-name) "int" [reduce using rule 246 (enum-name)] "int" [reduce using rule 731 (typedef-name)] "long" reduce using rule 137 (class-name) "long" [reduce using rule 246 (enum-name)] "long" [reduce using rule 731 (typedef-name)] "signed" reduce using rule 137 (class-name) "signed" [reduce using rule 246 (enum-name)] "signed" [reduce using rule 731 (typedef-name)] "unsigned" reduce using rule 137 (class-name) "unsigned" [reduce using rule 246 (enum-name)] "unsigned" [reduce using rule 731 (typedef-name)] "float" reduce using rule 137 (class-name) "float" [reduce using rule 246 (enum-name)] "float" [reduce using rule 731 (typedef-name)] "double" reduce using rule 137 (class-name) "double" [reduce using rule 246 (enum-name)] "double" [reduce using rule 731 (typedef-name)] "void" reduce using rule 137 (class-name) "void" [reduce using rule 246 (enum-name)] "void" [reduce using rule 731 (typedef-name)] "static_assert" reduce using rule 137 (class-name) "static_assert" [reduce using rule 246 (enum-name)] "static_assert" [reduce using rule 731 (typedef-name)] "static" reduce using rule 137 (class-name) "static" [reduce using rule 246 (enum-name)] "static" [reduce using rule 731 (typedef-name)] "thread_local" reduce using rule 137 (class-name) "thread_local" [reduce using rule 246 (enum-name)] "thread_local" [reduce using rule 731 (typedef-name)] "mutable" reduce using rule 137 (class-name) "mutable" [reduce using rule 246 (enum-name)] "mutable" [reduce using rule 731 (typedef-name)] "override" reduce using rule 137 (class-name) "override" [reduce using rule 246 (enum-name)] "override" [reduce using rule 731 (typedef-name)] $default reduce using rule 137 (class-name)

State 507

760 unqualified-id"~" decltype-specifier $default reduce using rule 760 (unqualified-id)

State 508

759 unqualified-id"~" type-name $default reduce using rule 759 (unqualified-id)

State 509

738 unary-expression"++" cast-expression $default reduce using rule 738 (unary-expression)

State 510

739 unary-expression"--" cast-expression $default reduce using rule 739 (unary-expression)

State 511

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 765 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 512

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 766 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 513

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 767 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 514

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 768 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 515

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 769 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 770 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 516

55 assignment-expression-optassignment-expression $default reduce using rule 55 (assignment-expression-opt)

State 517

701 throw-expression"throw" assignment-expression-opt $default reduce using rule 701 (throw-expression)

State 518

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" "(" shift, and go to state 771

State 519

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 438 IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 439 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 440 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 772 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 520

741 unary-expression"sizeof" unary-expression $default reduce using rule 741 (unary-expression)

State 521

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 744 unary-expression"alignof" "(" type-id ")" IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 773 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 522

775 yield-expression"co_yield" assignment-expression $default reduce using rule 775 (yield-expression)

State 523

776 yield-expression"co_yield" braced-init-list $default reduce using rule 776 (yield-expression)

State 524

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 222 | SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 774 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 775 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 525

466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 472 new-placement "(" expression-list ")" 473 new-placement-opt %empty [IDENTIFIER, "::", "typename", "(", "class", "struct", "union", "const", "volatile", "decltype", "enum", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void"] 474 | new-placement "(" shift, and go to state 776 "(" [reduce using rule 473 (new-placement-opt)] $default reduce using rule 473 (new-placement-opt) new-placement go to state 777 new-placement-opt go to state 778

State 526

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 42 additive-expressionadditive-expression "+" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 779 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 527

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 43 additive-expressionadditive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 780 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 528

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 48 and-expressionand-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 781 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 529

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 147 compare-expressioncompare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 782 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 530

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 257 equality-expressionequality-expression "==" relational-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 783 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 531

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 258 equality-expressionequality-expression "!=" relational-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 784 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 532

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 263 exclusive-or-expressionexclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 785 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 533

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 278 expressionexpression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 786 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 534

214 decltype-specifier"decltype" "(" expression ")" $default reduce using rule 214 (decltype-specifier)

State 535

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 787 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 536

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 618 parameter-declaration-clause go to state 788 parameter-declaration-list go to state 620 parameter-declaration-list-opt go to state 621

State 537

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 699 template-parameter-list template-parameter 700 | template-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 215 "typename" shift, and go to state 216 "class" shift, and go to state 217 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 223 template-parameter-list go to state 789 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108

State 538

192 decl-specifier-seq-optdecl-specifier-seq $default reduce using rule 192 (decl-specifier-seq-opt)

State 539

389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 478 noexcept-specifier "noexcept" "(" constant-expression ")" 479 | "noexcept" 480 noexcept-specifier-opt %empty ["alignas", "[", "{", "->", "requires"] 481 | noexcept-specifier "noexcept" shift, and go to state 790 $default reduce using rule 480 (noexcept-specifier-opt) noexcept-specifier go to state 791 noexcept-specifier-opt go to state 792

State 540

149 compound-statement "{" statement-seq-opt "}" 386 lambda-expressionlambda-introducer lambda-declarator compound-statement "{" shift, and go to state 793 compound-statement go to state 794

State 541

384 lambda-declaratorlambda-specifiers $default reduce using rule 384 (lambda-declarator)

State 542

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 406 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 407 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-argument go to state 409 template-argument-list go to state 410 template-argument-list-opt go to state 795 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 412 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 543

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 796 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 544

56 assignment-operator"=" $default reduce using rule 56 (assignment-operator)

State 545

57 assignment-operator"*=" $default reduce using rule 57 (assignment-operator)

State 546

58 assignment-operator"/=" $default reduce using rule 58 (assignment-operator)

State 547

59 assignment-operator"%=" $default reduce using rule 59 (assignment-operator)

State 548

60 assignment-operator"+=" $default reduce using rule 60 (assignment-operator)

State 549

61 assignment-operator"-=" $default reduce using rule 61 (assignment-operator)

State 550

62 assignment-operator">>=" $default reduce using rule 62 (assignment-operator)

State 551

63 assignment-operator"<<=" $default reduce using rule 63 (assignment-operator)

State 552

64 assignment-operator"&=" $default reduce using rule 64 (assignment-operator)

State 553

65 assignment-operator"^=" $default reduce using rule 65 (assignment-operator)

State 554

66 assignment-operator"|=" $default reduce using rule 66 (assignment-operator)

State 555

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 797 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 556

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 798 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 557

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 799 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 558

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 800 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 559

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 441 multiplicative-expressionmultiplicative-expression "/" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 801 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 560

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 442 multiplicative-expressionmultiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 802 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 561

169 conversion-function-id "operator" conversion-type-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 803 "operator" shift, and go to state 248 "~" shift, and go to state 335 conversion-function-id go to state 272 literal-operator-id go to state 282 operator-function-id go to state 289 simple-template-id go to state 804 template-id go to state 300 template-name go to state 102 unqualified-id go to state 805

State 562

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 406 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 407 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-argument go to state 409 template-argument-list go to state 410 template-argument-list-opt go to state 806 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 412 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 563

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 557 pm-expressionpm-expression ".*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 807 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 564

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 558 pm-expressionpm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 808 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 565

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 809 expression-list-opt go to state 810 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 566

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty ["]"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 809 expression-list-opt go to state 811 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 567

21 TEMPLATE-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 22 | "template" 567 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression "template" shift, and go to state 229 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 812

State 568

21 TEMPLATE-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 22 | "template" 566 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression "template" shift, and go to state 229 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 813

State 569

568 postfix-expressionpostfix-expression "++" $default reduce using rule 568 (postfix-expression)

State 570

569 postfix-expressionpostfix-expression "--" $default reduce using rule 569 (postfix-expression)

State 571

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 607 relational-expressionrelational-expression "<" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 814 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 572

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 608 relational-expressionrelational-expression ">" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 815 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 573

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 609 relational-expressionrelational-expression "<=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 816 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 574

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 610 relational-expressionrelational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 817 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 575

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 634 shift-expressionshift-expression "<<" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 818 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 576

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 635 shift-expressionshift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 819 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 577

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 809 expression-list-opt go to state 820 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 578

564 postfix-expressionsimple-type-specifier braced-init-list $default reduce using rule 564 (postfix-expression)

State 579

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 809 expression-list-opt go to state 821 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 580

565 postfix-expressiontypename-specifier braced-init-list $default reduce using rule 565 (postfix-expression)

State 581

737 unary-expressionunary-operator cast-expression $default reduce using rule 737 (unary-expression)

State 582

266 explicit-specifier"explicit" "(" constant-expression ")" $default reduce using rule 266 (explicit-specifier)

State 583

436 module-partition":" module-name-qualifier-opt IDENTIFIER $default reduce using rule 436 (module-partition)

State 584

430 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" $default reduce using rule 430 (module-import-declaration)

State 585

428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" $default reduce using rule 428 (module-import-declaration)

State 586

433 module-name-qualifiermodule-name-qualifier IDENTIFIER "." $default reduce using rule 433 (module-name-qualifier)

State 587

429 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" $default reduce using rule 429 (module-import-declaration)

State 588

444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 601 qualified-namespace-specifiernested-name-specifier-opt namespace-name IDENTIFIER shift, and go to state 822 namespace-alias go to state 85 namespace-name go to state 823

State 589

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" ";" shift, and go to state 824

State 590

14 INLINE-opt"inline" $default reduce using rule 14 (INLINE-opt)

State 591

235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" IDENTIFIER shift, and go to state 825

State 592

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" 682 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 117 string-literal go to state 826

State 593

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" ";" shift, and go to state 827

State 594

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" "{" shift, and go to state 828

State 595

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-body declaration-seq-opt 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 754 | INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 829 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 830 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 596

641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" $default reduce using rule 641 (simple-declaration)

State 597

242 enum-head-name-optenum-head-name $default reduce using rule 242 (enum-head-name-opt)

State 598

444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" IDENTIFIER shift, and go to state 822 namespace-alias go to state 85 namespace-name go to state 831

State 599

5 ELLIPSIS-opt %empty [")"] 6 | "..." 46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 832

State 600

5 ELLIPSIS-opt %empty [")"] 6 | "..." 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 833

State 601

491 noptr-declaratornoptr-declarator parameters-and-qualifiers $default reduce using rule 491 (noptr-declarator)

State 602

493 noptr-declarator"(" ptr-declarator ")" $default reduce using rule 493 (noptr-declarator)

State 603

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" ")" shift, and go to state 834

State 604

76 attribute-namespace IDENTIFIER 87 attribute-using-prefix"using" attribute-namespace ":" IDENTIFIER shift, and go to state 835 attribute-namespace go to state 836

State 605

89 attribute-using-prefix-optattribute-using-prefix $default reduce using rule 89 (attribute-using-prefix-opt)

State 606

67 attribute attribute-token attribute-argument-clause-opt 72 attribute-list attribute-opt 73 | attribute-list "," attribute-opt 74 | attribute "..." 75 | attribute-list "," attribute "..." 76 attribute-namespace IDENTIFIER 77 attribute-opt %empty [",", "]"] 78 | attribute 79 attribute-scoped-token attribute-namespace "::" IDENTIFIER 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 85 attribute-token IDENTIFIER 86 | attribute-scoped-token IDENTIFIER shift, and go to state 837 $default reduce using rule 77 (attribute-opt) attribute go to state 838 attribute-list go to state 839 attribute-namespace go to state 840 attribute-opt go to state 841 attribute-scoped-token go to state 842 attribute-token go to state 843

State 607

175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 177 | cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 179 | cv-qualifier-seq "const" shift, and go to state 15 "volatile" shift, and go to state 16 "const" [reduce using rule 178 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) cv-qualifier go to state 607 cv-qualifier-seq go to state 608 cv-qualifier-seq-opt go to state 844

State 608

179 cv-qualifier-seq-optcv-qualifier-seq $default reduce using rule 179 (cv-qualifier-seq-opt)

State 609

593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 593 (ptr-operator)

State 610

342 identifier-list IDENTIFIER 343 | identifier-list "," IDENTIFIER 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" IDENTIFIER shift, and go to state 845 identifier-list go to state 846

State 611

770 virt-specifier"final" $default reduce using rule 770 (virt-specifier)

State 612

769 virt-specifier"override" $default reduce using rule 769 (virt-specifier)

State 613

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 328 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq "=" shift, and go to state 847 ":" shift, and go to state 848 "try" shift, and go to state 849 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 850 ctor-initializer-opt go to state 851 function-body go to state 852 function-try-block go to state 853

State 614

771 virt-specifier-seqvirt-specifier $default reduce using rule 771 (virt-specifier-seq)

State 615

769 virt-specifier "override" 770 | "final" 772 virt-specifier-seqvirt-specifier-seq virt-specifier 774 virt-specifier-seq-optvirt-specifier-seq [",", "=", ";", ":", "{", "try"] "final" shift, and go to state 611 "override" shift, and go to state 612 $default reduce using rule 774 (virt-specifier-seq-opt) virt-specifier go to state 854

State 616

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq "=" shift, and go to state 847 ":" shift, and go to state 848 "try" shift, and go to state 849 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 850 ctor-initializer-opt go to state 851 function-body go to state 855 function-try-block go to state 853

State 617

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 179 | cv-qualifier-seq 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt "alignas" shift, and go to state 157 "[" shift, and go to state 161 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "alignas" [reduce using rule 178 (cv-qualifier-seq-opt)] "[" [reduce using rule 178 (cv-qualifier-seq-opt)] "const" [reduce using rule 178 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 cv-qualifier go to state 607 cv-qualifier-seq go to state 608 cv-qualifier-seq-opt go to state 856

State 618

549 parameter-declaration-listparameter-declaration $default reduce using rule 549 (parameter-declaration-list)

State 619

553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt ")" shift, and go to state 857

State 620

548 parameter-declaration-clauseparameter-declaration-list "," "..." 550 parameter-declaration-listparameter-declaration-list "," parameter-declaration 552 parameter-declaration-list-optparameter-declaration-list ["...", ")"] "," shift, and go to state 858 $default reduce using rule 552 (parameter-declaration-list-opt)

State 621

5 ELLIPSIS-opt %empty [")"] 6 | "..." 547 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 859

State 622

160 constant-expression-optconstant-expression $default reduce using rule 160 (constant-expression-opt)

State 623

492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 860

State 624

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 702 trailing-return-type"->" type-id 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 861 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 625

212 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type $default reduce using rule 212 (declarator)

State 626

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 233 empty-declaration ";" 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 423 member-specification member-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt %empty ["}"] 426 | member-specification 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 763 using-declaration "using" using-declarator-list ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 350 "protected" shift, and go to state 351 "public" shift, and go to state 352 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 353 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 425 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 354 alias-declaration go to state 355 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 356 deduction-guide go to state 357 empty-declaration go to state 358 enum-key go to state 359 explicit-specialization go to state 360 explicit-specifier go to state 361 explicit-specifier-opt go to state 76 function-definition go to state 362 member-declaration go to state 363 member-specification go to state 364 member-specification-opt go to state 862 opaque-enum-declaration go to state 366 static_assert-declaration go to state 367 template-declaration go to state 368 template-head go to state 101 using-declaration go to state 369 using-enum-declaration go to state 370

State 627

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 11 IDENTIFIER-opt %empty ["alignas", "[", ":"] 12 | IDENTIFIER 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 415 member-declarator declarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 419 member-declarator-list member-declarator 420 | member-declarator-list "," member-declarator 421 member-declarator-list-opt %empty [";"] 422 | member-declarator-list 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 863 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] ";" reduce using rule 421 (member-declarator-list-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 164 IDENTIFIER-opt go to state 864 class-name go to state 55 declarator go to state 865 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 member-declarator go to state 866 member-declarator-list go to state 867 member-declarator-list-opt go to state 868 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 628

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 240 enum-head-name nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-head-name go to state 869 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 395 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 629

423 member-specificationmember-declaration member-specification-opt $default reduce using rule 423 (member-specification)

State 630

142 class-specifierclass-head "{" member-specification-opt "}" $default reduce using rule 142 (class-specifier)

State 631

36 access-specifier "private" 37 | "protected" 38 | "public" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 102 base-specifierattribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "virtual" shift, and go to state 870 "private" shift, and go to state 350 "protected" shift, and go to state 351 "public" shift, and go to state 352 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] access-specifier go to state 871 alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 class-or-decltype go to state 872 decltype-specifier go to state 873 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 874 nested-name-specifier-opt go to state 875 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 632

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 105 base-specifier-listbase-specifier ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 876

State 633

99 base-clause":" base-specifier-list ["{"] 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt "," shift, and go to state 877 $default reduce using rule 99 (base-clause)

State 634

143 class-virt-specifier"final" $default reduce using rule 143 (class-virt-specifier)

State 635

145 class-virt-specifier-optclass-virt-specifier $default reduce using rule 145 (class-virt-specifier-opt)

State 636

99 base-clause ":" base-specifier-list 100 base-clause-opt %empty ["{"] 101 | base-clause 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt ":" shift, and go to state 371 $default reduce using rule 100 (base-clause-opt) base-clause go to state 372 base-clause-opt go to state 878

State 637

137 class-nameIDENTIFIER [":", "{", "final"] 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", ">", "explicit", "*", "requires", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 696 template-nameIDENTIFIER ["<"] ":" reduce using rule 137 (class-name) ":" [reduce using rule 229 (elaborated-type-specifier)] "{" reduce using rule 137 (class-name) "{" [reduce using rule 229 (elaborated-type-specifier)] "final" reduce using rule 137 (class-name) "<" reduce using rule 696 (template-name) $default reduce using rule 229 (elaborated-type-specifier)

State 638

133 class-head-namenested-name-specifier-opt class-name $default reduce using rule 133 (class-head-name)

State 639

138 class-namesimple-template-id $default reduce using rule 138 (class-name)

State 640

231 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" "::" shift, and go to state 672 "::" [reduce using rule 231 (elaborated-type-specifier)] $default reduce using rule 231 (elaborated-type-specifier)

State 641

361 initializer-clauseassignment-expression $default reduce using rule 361 (initializer-clause)

State 642

362 initializer-clausebraced-init-list $default reduce using rule 362 (initializer-clause)

State 643

116 brace-or-equal-initializer"=" initializer-clause $default reduce using rule 116 (brace-or-equal-initializer)

State 644

360 initializer"(" expression-list ")" ")" shift, and go to state 879

State 645

5 ELLIPSIS-opt %empty [",", ")", "]", "}"] 6 | "..." 363 initializer-listinitializer-clause ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 880

State 646

279 expression-listinitializer-list [")", "]"] 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "," shift, and go to state 881 $default reduce using rule 279 (expression-list)

State 647

122 braced-init-list"{" "}" $default reduce using rule 122 (braced-init-list)

State 648

227 designator"." IDENTIFIER IDENTIFIER shift, and go to state 882

State 649

225 designated-initializer-listdesignated-initializer-clause $default reduce using rule 225 (designated-initializer-list)

State 650

1 COMMA-opt %empty ["}"] 2 | "," 121 braced-init-list"{" designated-initializer-list COMMA-opt "}" 226 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause "," shift, and go to state 883 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 884

State 651

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 224 designated-initializer-clausedesignator brace-or-equal-initializer "=" shift, and go to state 377 "{" shift, and go to state 379 brace-or-equal-initializer go to state 885 braced-init-list go to state 382

State 652

1 COMMA-opt %empty ["}"] 2 | "," 120 braced-init-list"{" initializer-list COMMA-opt "}" 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "," shift, and go to state 886 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 887

State 653

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 438 IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 439 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 440 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 654

163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 164 constraint-logical-or-expressionconstraint-logical-and-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "&&" shift, and go to state 888 "&&" [reduce using rule 164 (constraint-logical-or-expression)] $default reduce using rule 164 (constraint-logical-or-expression)

State 655

165 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression 621 requires-clause"requires" constraint-logical-or-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "||" shift, and go to state 889 $default reduce using rule 621 (requires-clause)

State 656

162 constraint-logical-and-expressionprimary-expression $default reduce using rule 162 (constraint-logical-and-expression)

State 657

351 init-declarator-listinit-declarator-list "," init-declarator $default reduce using rule 351 (init-declarator-list)

State 658

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 249 enumeratorIDENTIFIER attribute-specifier-seq-opt [",", "=", "}"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 $default reduce using rule 249 (enumerator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 659

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 251 enumerator-definitionenumerator "=" constant-expression 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 890 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 660

248 enum-specifierenum-head "{" enumerator-list "," "}" 249 enumerator IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition enumerator 251 | enumerator "=" constant-expression 253 enumerator-listenumerator-list "," enumerator-definition IDENTIFIER shift, and go to state 388 "}" shift, and go to state 891 enumerator go to state 389 enumerator-definition go to state 892

State 661

247 enum-specifierenum-head "{" enumerator-list-opt "}" $default reduce using rule 247 (enum-specifier)

State 662

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 236 enum-base":" type-specifier-seq 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 893 typedef-name go to state 108 typename-specifier go to state 109

State 663

238 enum-base-optenum-base $default reduce using rule 238 (enum-base-opt)

State 664

496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ";" shift, and go to state 894

State 665

239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 239 (enum-head)

State 666

240 enum-head-namenested-name-specifier-opt IDENTIFIER $default reduce using rule 240 (enum-head-name)

State 667

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" ")" shift, and go to state 895

State 668

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 436 module-partition ":" module-name-qualifier-opt IDENTIFIER 437 module-partition-opt %empty [";", "alignas", "["] 438 | module-partition ":" shift, and go to state 137 $default reduce using rule 437 (module-partition-opt) module-partition go to state 896 module-partition-opt go to state 897

State 669

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt ":" shift, and go to state 898

State 670

586 private-module-fragment-optprivate-module-fragment $default reduce using rule 586 (private-module-fragment-opt)

State 671

706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt $default reduce using rule 706 (translation-unit)

State 672

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" $default reduce using rule 457 (nested-name-specifier)

State 673

709 type-constraintnested-name-specifier-opt concept-name "<" template-argument-list-opt ">" ">" shift, and go to state 899

State 674

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 150 concept-definition"concept" concept-name "=" constraint-expression ";" 161 constraint-expression logical-or-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 constraint-expression go to state 900 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 901 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 675

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 902 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 676

686 template-argument-listtemplate-argument ELLIPSIS-opt $default reduce using rule 686 (template-argument-list)

State 677

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 406 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 407 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-argument go to state 903 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 412 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 678

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" $default reduce using rule 644 (simple-template-id)

State 679

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 729 type-specifier-seqtype-specifier attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "alignas" [reduce using rule 729 (type-specifier-seq)] "[" [reduce using rule 729 (type-specifier-seq)] $default reduce using rule 729 (type-specifier-seq) alignment-specifier go to state 165 attribute-specifier go to state 166

State 680

730 type-specifier-seqtype-specifier type-specifier-seq $default reduce using rule 730 (type-specifier-seq)

State 681

489 noptr-abstract-pack-declarator"..." $default reduce using rule 489 (noptr-abstract-pack-declarator)

State 682

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 682 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] $default reduce using rule 485 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 904 ptr-abstract-declarator go to state 905 ptr-operator go to state 906 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 683

33 abstract-declarator-optabstract-declarator $default reduce using rule 33 (abstract-declarator-opt)

State 684

712 type-idtype-specifier-seq abstract-declarator-opt $default reduce using rule 712 (type-id)

State 685

31 abstract-declaratorabstract-pack-declarator $default reduce using rule 31 (abstract-declarator)

State 686

486 noptr-abstract-declarator-optnoptr-abstract-declarator ["(", "["] 587 ptr-abstract-declaratornoptr-abstract-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" reduce using rule 486 (noptr-abstract-declarator-opt) "(" [reduce using rule 587 (ptr-abstract-declarator)] "[" reduce using rule 486 (noptr-abstract-declarator-opt) $default reduce using rule 587 (ptr-abstract-declarator)

State 687

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 346 "[" shift, and go to state 907 parameters-and-qualifiers go to state 908

State 688

34 abstract-pack-declaratornoptr-abstract-pack-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 487 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 346 "[" shift, and go to state 909 "(" [reduce using rule 34 (abstract-pack-declarator)] $default reduce using rule 34 (abstract-pack-declarator) parameters-and-qualifiers go to state 910

State 689

29 abstract-declaratorptr-abstract-declarator $default reduce using rule 29 (abstract-declarator)

State 690

34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 590 | ptr-abstract-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 681 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 682 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "..." [reduce using rule 589 (ptr-abstract-declarator-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "(" [reduce using rule 589 (ptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 589 (ptr-abstract-declarator-opt) abstract-pack-declarator go to state 911 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 904 noptr-abstract-pack-declarator go to state 688 ptr-abstract-declarator go to state 912 ptr-abstract-declarator-opt go to state 913 ptr-operator go to state 690 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 691

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" ")" shift, and go to state 914

State 692

390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" $default reduce using rule 390 (linkage-specification)

State 693

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [",", "...", "=", ")", ">"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 915 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 916 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "..." [reduce using rule 32 (abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 32 (abstract-declarator-opt) ELLIPSIS-opt go to state 164 abstract-declarator go to state 683 abstract-declarator-opt go to state 917 abstract-pack-declarator go to state 685 class-name go to state 55 declarator go to state 918 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 687 noptr-abstract-pack-declarator go to state 688 noptr-declarator go to state 172 ptr-abstract-declarator go to state 689 ptr-declarator go to state 173 ptr-operator go to state 919 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 694

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 426 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 920

State 695

721 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression "=" shift, and go to state 921

State 696

700 template-parameter-listtemplate-parameter-list "," template-parameter $default reduce using rule 700 (template-parameter-list)

State 697

623 requires-clause-optrequires-clause $default reduce using rule 623 (requires-clause-opt)

State 698

692 template-head"template" "<" template-parameter-list ">" requires-clause-opt $default reduce using rule 692 (template-head)

State 699

718 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 718 (type-parameter)

State 700

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 719 type-parametertype-constraint IDENTIFIER-opt "=" type-id 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 922 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 701

716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 716 (type-parameter)

State 702

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 717 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 923 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 703

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" ";" shift, and go to state 924

State 704

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", ";", "alignas", "(", "&", "[", "&&", "decltype", "*"] 84 | attribute-specifier-seq 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seq defining-type-specifier attribute-specifier-seq-opt 220 | defining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 221 | defining-type-specifier defining-type-specifier-seq 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 925 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-specifier go to state 704 defining-type-specifier-seq go to state 926 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 705

29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [";"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 216 defining-type-iddefining-type-specifier-seq abstract-declarator-opt 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 681 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 682 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 683 abstract-declarator-opt go to state 927 abstract-pack-declarator go to state 685 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 687 noptr-abstract-pack-declarator go to state 688 ptr-abstract-declarator go to state 689 ptr-operator go to state 690 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 706

766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt $default reduce using rule 766 (using-declarator-list)

State 707

278 expressionexpression "," assignment-expression 477 noexcept-expression"noexcept" "(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 928

State 708

317 fold-operator"," $default reduce using rule 317 (fold-operator)

State 709

288 fold-operator"+" $default reduce using rule 288 (fold-operator)

State 710

289 fold-operator"-" $default reduce using rule 289 (fold-operator)

State 711

308 fold-operator"=" $default reduce using rule 308 (fold-operator)

State 712

294 fold-operator"&" $default reduce using rule 294 (fold-operator)

State 713

300 fold-operator"*=" $default reduce using rule 300 (fold-operator)

State 714

301 fold-operator"/=" $default reduce using rule 301 (fold-operator)

State 715

302 fold-operator"%=" $default reduce using rule 302 (fold-operator)

State 716

298 fold-operator"+=" $default reduce using rule 298 (fold-operator)

State 717

299 fold-operator"-=" $default reduce using rule 299 (fold-operator)

State 718

307 fold-operator">>=" $default reduce using rule 307 (fold-operator)

State 719

306 fold-operator"<<=" $default reduce using rule 306 (fold-operator)

State 720

304 fold-operator"&=" $default reduce using rule 304 (fold-operator)

State 721

303 fold-operator"^=" $default reduce using rule 303 (fold-operator)

State 722

305 fold-operator"|=" $default reduce using rule 305 (fold-operator)

State 723

315 fold-operator"&&" $default reduce using rule 315 (fold-operator)

State 724

316 fold-operator"||" $default reduce using rule 316 (fold-operator)

State 725

309 fold-operator"==" $default reduce using rule 309 (fold-operator)

State 726

310 fold-operator"!=" $default reduce using rule 310 (fold-operator)

State 727

293 fold-operator"^" $default reduce using rule 293 (fold-operator)

State 728

311 fold-operator"<" $default reduce using rule 311 (fold-operator)

State 729

312 fold-operator">" $default reduce using rule 312 (fold-operator)

State 730

290 fold-operator"*" $default reduce using rule 290 (fold-operator)

State 731

291 fold-operator"/" $default reduce using rule 291 (fold-operator)

State 732

292 fold-operator"%" $default reduce using rule 292 (fold-operator)

State 733

295 fold-operator"|" $default reduce using rule 295 (fold-operator)

State 734

296 fold-operator"<<" $default reduce using rule 296 (fold-operator)

State 735

297 fold-operator">>" $default reduce using rule 297 (fold-operator)

State 736

313 fold-operator"<=" $default reduce using rule 313 (fold-operator)

State 737

314 fold-operator">=" $default reduce using rule 314 (fold-operator)

State 738

318 fold-operator".*" $default reduce using rule 318 (fold-operator)

State 739

319 fold-operator"->*" $default reduce using rule 319 (fold-operator)

State 740

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 929 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 741

285 fold-expression"(" cast-expression fold-operator "..." ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" "..." shift, and go to state 930

State 742

579 primary-expression"(" expression ")" $default reduce using rule 579 (primary-expression)

State 743

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 931 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 744

636 simple-captureIDENTIFIER ELLIPSIS-opt $default reduce using rule 636 (simple-capture)

State 745

5 ELLIPSIS-opt %empty [",", "]"] 6 | "..." 637 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 932

State 746

347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer IDENTIFIER shift, and go to state 933

State 747

639 simple-capture"*" "this" $default reduce using rule 639 (simple-capture)

State 748

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 346 init-captureELLIPSIS-opt IDENTIFIER initializer 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" "=" shift, and go to state 377 "(" shift, and go to state 378 "{" shift, and go to state 379 brace-or-equal-initializer go to state 381 braced-init-list go to state 382 initializer go to state 934

State 749

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 127 capture-list capture 128 | capture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 381 lambda-capturecapture-default "," capture-list 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 155 IDENTIFIER shift, and go to state 442 "this" shift, and go to state 443 "&" shift, and go to state 935 "*" shift, and go to state 446 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 447 capture go to state 448 capture-list go to state 936 init-capture go to state 451 simple-capture go to state 454

State 750

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 128 capture-listcapture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 155 IDENTIFIER shift, and go to state 442 "this" shift, and go to state 443 "&" shift, and go to state 935 "*" shift, and go to state 446 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 447 capture go to state 937 init-capture go to state 451 simple-capture go to state 454

State 751

388 lambda-introducer"[" lambda-capture-opt "]" $default reduce using rule 388 (lambda-introducer)

State 752

504 overloadable-operator"(" ")" $default reduce using rule 504 (overloadable-operator)

State 753

505 overloadable-operator"[" "]" $default reduce using rule 505 (overloadable-operator)

State 754

502 overloadable-operator"delete" "[" "]" "]" shift, and go to state 938

State 755

501 overloadable-operator"new" "[" "]" "]" shift, and go to state 939

State 756

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 406 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 407 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-argument go to state 409 template-argument-list go to state 410 template-argument-list-opt go to state 940 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 412 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 757

392 literal-operator-id"operator" string-literal IDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 735 ud-suffixIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 392 (literal-operator-id) "," [reduce using rule 735 (ud-suffix)] "constexpr" reduce using rule 392 (literal-operator-id) "constexpr" [reduce using rule 735 (ud-suffix)] "..." reduce using rule 392 (literal-operator-id) "..." [reduce using rule 735 (ud-suffix)] "export" reduce using rule 392 (literal-operator-id) "export" [reduce using rule 735 (ud-suffix)] "extern" reduce using rule 392 (literal-operator-id) "extern" [reduce using rule 735 (ud-suffix)] IDENTIFIER reduce using rule 392 (literal-operator-id) IDENTIFIER [reduce using rule 735 (ud-suffix)] "inline" reduce using rule 392 (literal-operator-id) "inline" [reduce using rule 735 (ud-suffix)] "noexcept" reduce using rule 392 (literal-operator-id) "noexcept" [reduce using rule 735 (ud-suffix)] "::" reduce using rule 392 (literal-operator-id) "::" [reduce using rule 735 (ud-suffix)] "template" reduce using rule 392 (literal-operator-id) "template" [reduce using rule 735 (ud-suffix)] "typename" reduce using rule 392 (literal-operator-id) "typename" [reduce using rule 735 (ud-suffix)] "virtual" reduce using rule 392 (literal-operator-id) "virtual" [reduce using rule 735 (ud-suffix)] "+" reduce using rule 392 (literal-operator-id) "+" [reduce using rule 735 (ud-suffix)] "-" reduce using rule 392 (literal-operator-id) "-" [reduce using rule 735 (ud-suffix)] "using" reduce using rule 392 (literal-operator-id) "using" [reduce using rule 735 (ud-suffix)] "=" reduce using rule 392 (literal-operator-id) "=" [reduce using rule 735 (ud-suffix)] ";" reduce using rule 392 (literal-operator-id) ";" [reduce using rule 735 (ud-suffix)] "alignas" reduce using rule 392 (literal-operator-id) "alignas" [reduce using rule 735 (ud-suffix)] "(" reduce using rule 392 (literal-operator-id) "(" [reduce using rule 735 (ud-suffix)] ")" reduce using rule 392 (literal-operator-id) ")" [reduce using rule 735 (ud-suffix)] "&" reduce using rule 392 (literal-operator-id) "&" [reduce using rule 735 (ud-suffix)] "asm" reduce using rule 392 (literal-operator-id) "asm" [reduce using rule 735 (ud-suffix)] "*=" reduce using rule 392 (literal-operator-id) "*=" [reduce using rule 735 (ud-suffix)] "/=" reduce using rule 392 (literal-operator-id) "/=" [reduce using rule 735 (ud-suffix)] "%=" reduce using rule 392 (literal-operator-id) "%=" [reduce using rule 735 (ud-suffix)] "+=" reduce using rule 392 (literal-operator-id) "+=" [reduce using rule 735 (ud-suffix)] "-=" reduce using rule 392 (literal-operator-id) "-=" [reduce using rule 735 (ud-suffix)] ">>=" reduce using rule 392 (literal-operator-id) ">>=" [reduce using rule 735 (ud-suffix)] "<<=" reduce using rule 392 (literal-operator-id) "<<=" [reduce using rule 735 (ud-suffix)] "&=" reduce using rule 392 (literal-operator-id) "&=" [reduce using rule 735 (ud-suffix)] "^=" reduce using rule 392 (literal-operator-id) "^=" [reduce using rule 735 (ud-suffix)] "|=" reduce using rule 392 (literal-operator-id) "|=" [reduce using rule 735 (ud-suffix)] "[" reduce using rule 392 (literal-operator-id) "[" [reduce using rule 735 (ud-suffix)] "]" reduce using rule 392 (literal-operator-id) "]" [reduce using rule 735 (ud-suffix)] ":" reduce using rule 392 (literal-operator-id) ":" [reduce using rule 735 (ud-suffix)] "{" reduce using rule 392 (literal-operator-id) "{" [reduce using rule 735 (ud-suffix)] "}" reduce using rule 392 (literal-operator-id) "}" [reduce using rule 735 (ud-suffix)] "class" reduce using rule 392 (literal-operator-id) "class" [reduce using rule 735 (ud-suffix)] "struct" reduce using rule 392 (literal-operator-id) "struct" [reduce using rule 735 (ud-suffix)] "union" reduce using rule 392 (literal-operator-id) "union" [reduce using rule 735 (ud-suffix)] "final" reduce using rule 392 (literal-operator-id) "final" [reduce using rule 735 (ud-suffix)] "<=>" reduce using rule 392 (literal-operator-id) "<=>" [reduce using rule 735 (ud-suffix)] "concept" reduce using rule 392 (literal-operator-id) "concept" [reduce using rule 735 (ud-suffix)] "?" reduce using rule 392 (literal-operator-id) "?" [reduce using rule 735 (ud-suffix)] "&&" reduce using rule 392 (literal-operator-id) "&&" [reduce using rule 735 (ud-suffix)] "||" reduce using rule 392 (literal-operator-id) "||" [reduce using rule 735 (ud-suffix)] "operator" reduce using rule 392 (literal-operator-id) "operator" [reduce using rule 735 (ud-suffix)] "const" reduce using rule 392 (literal-operator-id) "const" [reduce using rule 735 (ud-suffix)] "volatile" reduce using rule 392 (literal-operator-id) "volatile" [reduce using rule 735 (ud-suffix)] "friend" reduce using rule 392 (literal-operator-id) "friend" [reduce using rule 735 (ud-suffix)] "typedef" reduce using rule 392 (literal-operator-id) "typedef" [reduce using rule 735 (ud-suffix)] "consteval" reduce using rule 392 (literal-operator-id) "consteval" [reduce using rule 735 (ud-suffix)] "constinit" reduce using rule 392 (literal-operator-id) "constinit" [reduce using rule 735 (ud-suffix)] "decltype" reduce using rule 392 (literal-operator-id) "decltype" [reduce using rule 735 (ud-suffix)] "->" reduce using rule 392 (literal-operator-id) "->" [reduce using rule 735 (ud-suffix)] "." reduce using rule 392 (literal-operator-id) "." [reduce using rule 735 (ud-suffix)] "enum" reduce using rule 392 (literal-operator-id) "enum" [reduce using rule 735 (ud-suffix)] "==" reduce using rule 392 (literal-operator-id) "==" [reduce using rule 735 (ud-suffix)] "!=" reduce using rule 392 (literal-operator-id) "!=" [reduce using rule 735 (ud-suffix)] "^" reduce using rule 392 (literal-operator-id) "^" [reduce using rule 735 (ud-suffix)] "<" reduce using rule 392 (literal-operator-id) "<" [reduce using rule 735 (ud-suffix)] ">" reduce using rule 392 (literal-operator-id) ">" [reduce using rule 735 (ud-suffix)] "explicit" reduce using rule 392 (literal-operator-id) "explicit" [reduce using rule 735 (ud-suffix)] "*" reduce using rule 392 (literal-operator-id) "*" [reduce using rule 735 (ud-suffix)] "/" reduce using rule 392 (literal-operator-id) "/" [reduce using rule 735 (ud-suffix)] "%" reduce using rule 392 (literal-operator-id) "%" [reduce using rule 735 (ud-suffix)] "|" reduce using rule 392 (literal-operator-id) "|" [reduce using rule 735 (ud-suffix)] "<<" reduce using rule 392 (literal-operator-id) "<<" [reduce using rule 735 (ud-suffix)] ">>" reduce using rule 392 (literal-operator-id) ">>" [reduce using rule 735 (ud-suffix)] "<=" reduce using rule 392 (literal-operator-id) "<=" [reduce using rule 735 (ud-suffix)] ">=" reduce using rule 392 (literal-operator-id) ">=" [reduce using rule 735 (ud-suffix)] ".*" reduce using rule 392 (literal-operator-id) ".*" [reduce using rule 735 (ud-suffix)] "->*" reduce using rule 392 (literal-operator-id) "->*" [reduce using rule 735 (ud-suffix)] "try" reduce using rule 392 (literal-operator-id) "try" [reduce using rule 735 (ud-suffix)] "import" reduce using rule 392 (literal-operator-id) "import" [reduce using rule 735 (ud-suffix)] "namespace" reduce using rule 392 (literal-operator-id) "namespace" [reduce using rule 735 (ud-suffix)] "requires" reduce using rule 392 (literal-operator-id) "requires" [reduce using rule 735 (ud-suffix)] "~" reduce using rule 392 (literal-operator-id) "~" [reduce using rule 735 (ud-suffix)] "++" reduce using rule 392 (literal-operator-id) "++" [reduce using rule 735 (ud-suffix)] "--" reduce using rule 392 (literal-operator-id) "--" [reduce using rule 735 (ud-suffix)] "auto" reduce using rule 392 (literal-operator-id) "auto" [reduce using rule 735 (ud-suffix)] "char" reduce using rule 392 (literal-operator-id) "char" [reduce using rule 735 (ud-suffix)] "char8_t" reduce using rule 392 (literal-operator-id) "char8_t" [reduce using rule 735 (ud-suffix)] "char16_t" reduce using rule 392 (literal-operator-id) "char16_t" [reduce using rule 735 (ud-suffix)] "char32_t" reduce using rule 392 (literal-operator-id) "char32_t" [reduce using rule 735 (ud-suffix)] "wchar_t" reduce using rule 392 (literal-operator-id) "wchar_t" [reduce using rule 735 (ud-suffix)] "bool" reduce using rule 392 (literal-operator-id) "bool" [reduce using rule 735 (ud-suffix)] "short" reduce using rule 392 (literal-operator-id) "short" [reduce using rule 735 (ud-suffix)] "int" reduce using rule 392 (literal-operator-id) "int" [reduce using rule 735 (ud-suffix)] "long" reduce using rule 392 (literal-operator-id) "long" [reduce using rule 735 (ud-suffix)] "signed" reduce using rule 392 (literal-operator-id) "signed" [reduce using rule 735 (ud-suffix)] "unsigned" reduce using rule 392 (literal-operator-id) "unsigned" [reduce using rule 735 (ud-suffix)] "float" reduce using rule 392 (literal-operator-id) "float" [reduce using rule 735 (ud-suffix)] "double" reduce using rule 392 (literal-operator-id) "double" [reduce using rule 735 (ud-suffix)] "void" reduce using rule 392 (literal-operator-id) "void" [reduce using rule 735 (ud-suffix)] "static_assert" reduce using rule 392 (literal-operator-id) "static_assert" [reduce using rule 735 (ud-suffix)] "static" reduce using rule 392 (literal-operator-id) "static" [reduce using rule 735 (ud-suffix)] "thread_local" reduce using rule 392 (literal-operator-id) "thread_local" [reduce using rule 735 (ud-suffix)] "mutable" reduce using rule 392 (literal-operator-id) "mutable" [reduce using rule 735 (ud-suffix)] "override" reduce using rule 392 (literal-operator-id) "override" [reduce using rule 735 (ud-suffix)] $default reduce using rule 392 (literal-operator-id)

State 758

762 user-defined-string-literalstring-literal ud-suffix $default reduce using rule 762 (user-defined-string-literal)

State 759

168 conversion-declarator-optconversion-declarator $default reduce using rule 168 (conversion-declarator-opt)

State 760

170 conversion-type-idtype-specifier-seq conversion-declarator-opt $default reduce using rule 170 (conversion-type-id)

State 761

137 class-name IDENTIFIER 138 | simple-template-id 166 conversion-declarator ptr-operator conversion-declarator-opt 166 | ptr-operator conversion-declarator-opt 167 conversion-declarator-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 168 | conversion-declarator 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 167 (conversion-declarator-opt)] "::" [reduce using rule 167 (conversion-declarator-opt)] "&" [reduce using rule 167 (conversion-declarator-opt)] "&&" [reduce using rule 167 (conversion-declarator-opt)] "decltype" [reduce using rule 167 (conversion-declarator-opt)] "*" [reduce using rule 167 (conversion-declarator-opt)] $default reduce using rule 167 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 759 conversion-declarator-opt go to state 941 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 ptr-operator go to state 761 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 762

616 requirement-parameter-list"(" parameter-declaration-clause ")" ")" shift, and go to state 942

State 763

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement "{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 461 nested-requirement "requires" constraint-expression ";" 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 611 requirement simple-requirement 612 | type-requirement 613 | compound-requirement 614 | nested-requirement 615 requirement-body"{" requirement-seq "}" 619 requirement-seq requirement 620 | requirement-seq requirement 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 643 simple-requirement expression ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement "typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 943 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 944 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 945 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 compound-requirement go to state 946 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 947 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 nested-requirement go to state 948 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requirement go to state 949 requirement-seq go to state 950 requires-expression go to state 295 shift-expression go to state 296 simple-requirement go to state 951 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 952 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 764

624 requires-expression"requires" requirement-parameter-list-opt requirement-body $default reduce using rule 624 (requires-expression)

State 765

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 953

State 766

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 954

State 767

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 955

State 768

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 956

State 769

278 expressionexpression "," assignment-expression 574 postfix-expression"typeid" "(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 957

State 770

575 postfix-expression"typeid" "(" type-id ")" ")" shift, and go to state 958

State 771

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" IDENTIFIER shift, and go to state 959

State 772

742 unary-expression"sizeof" "(" type-id ")" ")" shift, and go to state 960

State 773

744 unary-expression"alignof" "(" type-id ")" ")" shift, and go to state 961

State 774

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 125 capture-default "&" 126 | "=" 127 capture-list capture 128 | capture-list "," capture 223 delete-expressionSCOPE-opt "delete" "[" "]" cast-expression 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture capture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt %empty ["]"] 383 | lambda-capture 388 lambda-introducer"[" lambda-capture-opt "]" 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 155 IDENTIFIER shift, and go to state 442 "this" shift, and go to state 443 "=" shift, and go to state 444 "&" shift, and go to state 445 "]" shift, and go to state 962 "*" shift, and go to state 446 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "]" [reduce using rule 382 (lambda-capture-opt)] ELLIPSIS-opt go to state 447 capture go to state 448 capture-default go to state 449 capture-list go to state 450 init-capture go to state 451 lambda-capture go to state 452 lambda-capture-opt go to state 453 simple-capture go to state 454

State 775

222 delete-expressionSCOPE-opt "delete" cast-expression $default reduce using rule 222 (delete-expression)

State 776

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 472 new-placement"(" expression-list ")" 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 963 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 777

474 new-placement-optnew-placement $default reduce using rule 474 (new-placement-opt)

State 778

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 475 new-type-id type-specifier-seq new-declarator-opt 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "(" shift, and go to state 964 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 new-type-id go to state 965 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 966 typedef-name go to state 108 typename-specifier go to state 109

State 779

42 additive-expressionadditive-expression "+" multiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression "*" shift, and go to state 558 "/" shift, and go to state 559 "%" shift, and go to state 560 $default reduce using rule 42 (additive-expression)

State 780

43 additive-expressionadditive-expression "-" multiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression "*" shift, and go to state 558 "/" shift, and go to state 559 "%" shift, and go to state 560 $default reduce using rule 43 (additive-expression)

State 781

48 and-expressionand-expression "&" equality-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] 257 equality-expressionequality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression "==" shift, and go to state 530 "!=" shift, and go to state 531 $default reduce using rule 48 (and-expression)

State 782

147 compare-expressioncompare-expression "<=>" shift-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] 634 shift-expressionshift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression "<<" shift, and go to state 575 ">>" shift, and go to state 576 $default reduce using rule 147 (compare-expression)

State 783

257 equality-expressionequality-expression "==" relational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", ">", "|"] 607 relational-expressionrelational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression "<" shift, and go to state 571 ">" shift, and go to state 572 "<=" shift, and go to state 573 ">=" shift, and go to state 574 ">" [reduce using rule 257 (equality-expression)] $default reduce using rule 257 (equality-expression)

State 784

258 equality-expressionequality-expression "!=" relational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", ">", "|"] 607 relational-expressionrelational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression "<" shift, and go to state 571 ">" shift, and go to state 572 "<=" shift, and go to state 573 ">=" shift, and go to state 574 ">" [reduce using rule 258 (equality-expression)] $default reduce using rule 258 (equality-expression)

State 785

48 and-expressionand-expression "&" equality-expression 263 exclusive-or-expressionexclusive-or-expression "^" and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] "&" shift, and go to state 528 $default reduce using rule 263 (exclusive-or-expression)

State 786

278 expressionexpression "," assignment-expression $default reduce using rule 278 (expression)

State 787

263 exclusive-or-expressionexclusive-or-expression "^" and-expression 345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">", "|"] "^" shift, and go to state 532 $default reduce using rule 345 (inclusive-or-expression)

State 788

385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt ")" shift, and go to state 967

State 789

387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 700 template-parameter-listtemplate-parameter-list "," template-parameter "," shift, and go to state 424 ">" shift, and go to state 968

State 790

478 noexcept-specifier"noexcept" "(" constant-expression ")" 479 | "noexcept" [",", "...", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] "(" shift, and go to state 969 "(" [reduce using rule 479 (noexcept-specifier)] $default reduce using rule 479 (noexcept-specifier)

State 791

481 noexcept-specifier-optnoexcept-specifier $default reduce using rule 481 (noexcept-specifier-opt)

State 792

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 970

State 793

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 149 compound-statement"{" statement-seq-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 672 statement-seq statement 673 | statement-seq statement 674 statement-seq-opt %empty ["}"] 675 | statement-seq 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 674 (statement-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 977 statement-seq go to state 978 statement-seq-opt go to state 979 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 794

386 lambda-expressionlambda-introducer lambda-declarator compound-statement $default reduce using rule 386 (lambda-expression)

State 795

695 template-idliteral-operator-id "<" template-argument-list-opt ">" ">" shift, and go to state 980

State 796

345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">"] "|" shift, and go to state 535 $default reduce using rule 395 (logical-and-expression)

State 797

157 conditional-expressionlogical-or-expression "?" expression ":" assignment-expression 278 expressionexpression "," assignment-expression "," shift, and go to state 533 ":" shift, and go to state 981

State 798

395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "||", ">"] "&&" shift, and go to state 543 $default reduce using rule 397 (logical-or-expression)

State 799

53 assignment-expressionlogical-or-expression assignment-operator initializer-clause $default reduce using rule 53 (assignment-expression)

State 800

440 multiplicative-expressionmultiplicative-expression "*" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 563 "->*" shift, and go to state 564 $default reduce using rule 440 (multiplicative-expression)

State 801

441 multiplicative-expressionmultiplicative-expression "/" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 563 "->*" shift, and go to state 564 $default reduce using rule 441 (multiplicative-expression)

State 802

442 multiplicative-expressionmultiplicative-expression "%" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 563 "->*" shift, and go to state 564 $default reduce using rule 442 (multiplicative-expression)

State 803

696 template-nameIDENTIFIER ["<"] 755 unqualified-idIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" reduce using rule 696 (template-name) "<" [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)

State 804

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 693 template-idsimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 672 "::" [reduce using rule 693 (template-id)] $default reduce using rule 693 (template-id)

State 805

600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id $default reduce using rule 600 (qualified-id)

State 806

694 template-idoperator-function-id "<" template-argument-list-opt ">" ">" shift, and go to state 982

State 807

557 pm-expressionpm-expression ".*" cast-expression $default reduce using rule 557 (pm-expression)

State 808

558 pm-expressionpm-expression "->*" cast-expression $default reduce using rule 558 (pm-expression)

State 809

281 expression-list-optexpression-list $default reduce using rule 281 (expression-list-opt)

State 810

561 postfix-expressionpostfix-expression "(" expression-list-opt ")" ")" shift, and go to state 983

State 811

560 postfix-expressionpostfix-expression "[" expression-list-opt "]" "]" shift, and go to state 984

State 812

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 567 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "~" shift, and go to state 335 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 985 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 813

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 566 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "~" shift, and go to state 335 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 986 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 814

147 compare-expressioncompare-expression "<=>" shift-expression 607 relational-expressionrelational-expression "<" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 529 $default reduce using rule 607 (relational-expression)

State 815

147 compare-expressioncompare-expression "<=>" shift-expression 608 relational-expressionrelational-expression ">" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 529 $default reduce using rule 608 (relational-expression)

State 816

147 compare-expressioncompare-expression "<=>" shift-expression 609 relational-expressionrelational-expression "<=" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 529 $default reduce using rule 609 (relational-expression)

State 817

147 compare-expressioncompare-expression "<=>" shift-expression 610 relational-expressionrelational-expression ">=" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 529 $default reduce using rule 610 (relational-expression)

State 818

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 634 shift-expressionshift-expression "<<" additive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 526 "-" shift, and go to state 527 $default reduce using rule 634 (shift-expression)

State 819

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 635 shift-expressionshift-expression ">>" additive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 526 "-" shift, and go to state 527 $default reduce using rule 635 (shift-expression)

State 820

562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" ")" shift, and go to state 987

State 821

563 postfix-expressiontypename-specifier "(" expression-list-opt ")" ")" shift, and go to state 988

State 822

444 namespace-aliasIDENTIFIER [";"] 450 namespace-nameIDENTIFIER [";"] ";" reduce using rule 444 (namespace-alias) ";" [reduce using rule 450 (namespace-name)] $default reduce using rule 444 (namespace-alias)

State 823

601 qualified-namespace-specifiernested-name-specifier-opt namespace-name $default reduce using rule 601 (qualified-namespace-specifier)

State 824

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" $default reduce using rule 445 (namespace-alias-definition)

State 825

235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER ["::"] 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "{" shift, and go to state 989 $default reduce using rule 235 (enclosing-namespace-specifier)

State 826

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" ")" shift, and go to state 990

State 827

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" $default reduce using rule 676 (static_assert-declaration)

State 828

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 443 | INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-body declaration-seq-opt 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 829 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 991 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 829

446 namespace-bodydeclaration-seq-opt $default reduce using rule 446 (namespace-body)

State 830

754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" "}" shift, and go to state 992

State 831

767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" ";" shift, and go to state 993

State 832

46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" ")" shift, and go to state 994

State 833

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" ")" shift, and go to state 995

State 834

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" ";" shift, and go to state 996

State 835

76 attribute-namespaceIDENTIFIER $default reduce using rule 76 (attribute-namespace)

State 836

87 attribute-using-prefix"using" attribute-namespace ":" ":" shift, and go to state 997

State 837

76 attribute-namespaceIDENTIFIER ["::"] 85 attribute-tokenIDENTIFIER [",", "...", "(", "]"] "::" reduce using rule 76 (attribute-namespace) $default reduce using rule 85 (attribute-token)

State 838

74 attribute-listattribute "..." 78 attribute-optattribute [",", "]"] "..." shift, and go to state 998 $default reduce using rule 78 (attribute-opt)

State 839

73 attribute-listattribute-list "," attribute-opt 75 | attribute-list "," attribute "..." 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "," shift, and go to state 999 "]" shift, and go to state 1000

State 840

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER "::" shift, and go to state 1001

State 841

72 attribute-listattribute-opt $default reduce using rule 72 (attribute-list)

State 842

86 attribute-tokenattribute-scoped-token $default reduce using rule 86 (attribute-token)

State 843

67 attributeattribute-token attribute-argument-clause-opt 68 attribute-argument-clause "(" balanced-token-seq-opt ")" 69 attribute-argument-clause-opt %empty [",", "...", "]"] 70 | attribute-argument-clause "(" shift, and go to state 1002 $default reduce using rule 69 (attribute-argument-clause-opt) attribute-argument-clause go to state 1003 attribute-argument-clause-opt go to state 1004

State 844

177 cv-qualifier-seqcv-qualifier cv-qualifier-seq-opt $default reduce using rule 177 (cv-qualifier-seq)

State 845

342 identifier-listIDENTIFIER $default reduce using rule 342 (identifier-list)

State 846

343 identifier-listidentifier-list "," IDENTIFIER 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "," shift, and go to state 1005 "]" shift, and go to state 1006

State 847

325 function-body"=" "default" ";" 326 | "=" "delete" ";" "delete" shift, and go to state 1007 "default" shift, and go to state 1008

State 848

137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 172 ctor-initializer":" mem-initializer-list 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 398 mem-initializer mem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list 400 mem-initializer-id class-or-decltype 401 | IDENTIFIER 402 mem-initializer-list mem-initializer ELLIPSIS-opt 403 | mem-initializer-list "," mem-initializer ELLIPSIS-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 1009 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1010 decltype-specifier go to state 873 enum-name go to state 71 mem-initializer go to state 1011 mem-initializer-id go to state 1012 mem-initializer-list go to state 1013 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 874 nested-name-specifier-opt go to state 875 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 849

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq ":" shift, and go to state 848 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 850 ctor-initializer-opt go to state 1014

State 850

174 ctor-initializer-optctor-initializer $default reduce using rule 174 (ctor-initializer-opt)

State 851

149 compound-statement "{" statement-seq-opt "}" 323 function-bodyctor-initializer-opt compound-statement "{" shift, and go to state 793 compound-statement go to state 1015

State 852

328 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body $default reduce using rule 328 (function-definition)

State 853

324 function-bodyfunction-try-block $default reduce using rule 324 (function-body)

State 854

772 virt-specifier-seqvirt-specifier-seq virt-specifier $default reduce using rule 772 (virt-specifier-seq)

State 855

327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body $default reduce using rule 327 (function-definition)

State 856

596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 596 (ptr-operator)

State 857

175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "...", "noexcept", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "final", "&&", "->", ">", "try", "requires", "override"] 179 | cv-qualifier-seq 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "const" shift, and go to state 15 "volatile" shift, and go to state 16 $default reduce using rule 178 (cv-qualifier-seq-opt) cv-qualifier go to state 607 cv-qualifier-seq go to state 608 cv-qualifier-seq-opt go to state 1016

State 858

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 548 parameter-declaration-clauseparameter-declaration-list "," "..." 550 parameter-declaration-listparameter-declaration-list "," parameter-declaration "..." shift, and go to state 1017 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 1018

State 859

547 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt $default reduce using rule 547 (parameter-declaration-clause)

State 860

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1019

State 861

702 trailing-return-type"->" type-id $default reduce using rule 702 (trailing-return-type)

State 862

424 member-specificationaccess-specifier ":" member-specification-opt $default reduce using rule 424 (member-specification)

State 863

12 IDENTIFIER-optIDENTIFIER ["alignas", "[", ":"] 137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) $default reduce using rule 12 (IDENTIFIER-opt)

State 864

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1020

State 865

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt %empty [",", ";"] 119 | brace-or-equal-initializer 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 621 requires-clause "requires" constraint-logical-or-expression 769 virt-specifier "override" 770 | "final" 771 virt-specifier-seq virt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt %empty [",", "=", ";", ":", "{", "try"] 774 | virt-specifier-seq "=" shift, and go to state 377 "{" shift, and go to state 379 "final" shift, and go to state 611 "requires" shift, and go to state 380 "override" shift, and go to state 612 "," reduce using rule 118 (brace-or-equal-initializer-opt) "," [reduce using rule 773 (virt-specifier-seq-opt)] "=" [reduce using rule 773 (virt-specifier-seq-opt)] ";" reduce using rule 118 (brace-or-equal-initializer-opt) ";" [reduce using rule 773 (virt-specifier-seq-opt)] ":" reduce using rule 773 (virt-specifier-seq-opt) "{" [reduce using rule 773 (virt-specifier-seq-opt)] "try" reduce using rule 773 (virt-specifier-seq-opt) $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1021 brace-or-equal-initializer-opt go to state 1022 braced-init-list go to state 382 requires-clause go to state 1023 virt-specifier go to state 614 virt-specifier-seq go to state 615 virt-specifier-seq-opt go to state 1024

State 866

419 member-declarator-listmember-declarator $default reduce using rule 419 (member-declarator-list)

State 867

420 member-declarator-listmember-declarator-list "," member-declarator 422 member-declarator-list-optmember-declarator-list [";"] "," shift, and go to state 1025 $default reduce using rule 422 (member-declarator-list-opt)

State 868

404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" ";" shift, and go to state 1026

State 869

236 enum-base ":" type-specifier-seq 237 enum-base-opt %empty [";"] 238 | enum-base 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ":" shift, and go to state 662 $default reduce using rule 237 (enum-base-opt) enum-base go to state 663 enum-base-opt go to state 664

State 870

36 access-specifier "private" 37 | "protected" 38 | "public" 39 access-specifier-opt %empty [IDENTIFIER, "::", "decltype"] 40 | access-specifier 103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype "private" shift, and go to state 350 "protected" shift, and go to state 351 "public" shift, and go to state 352 $default reduce using rule 39 (access-specifier-opt) access-specifier go to state 1027 access-specifier-opt go to state 1028

State 871

27 VIRTUAL-opt %empty [IDENTIFIER, "::", "decltype"] 28 | "virtual" 104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype "virtual" shift, and go to state 1029 $default reduce using rule 27 (VIRTUAL-opt) VIRTUAL-opt go to state 1030

State 872

102 base-specifierattribute-specifier-seq-opt class-or-decltype $default reduce using rule 102 (base-specifier)

State 873

141 class-or-decltypedecltype-specifier [",", "...", "(", "{"] 455 nested-name-specifierdecltype-specifier "::" "::" shift, and go to state 188 $default reduce using rule 141 (class-or-decltype)

State 874

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 140 class-or-decltypenested-name-specifier "template" simple-template-id 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] IDENTIFIER shift, and go to state 197 "template" shift, and go to state 1031 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199

State 875

137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltypenested-name-specifier-opt type-name 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 506 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1032 typedef-name go to state 108

State 876

105 base-specifier-listbase-specifier ELLIPSIS-opt $default reduce using rule 105 (base-specifier-list)

State 877

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 102 base-specifier attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 631 base-specifier go to state 1033

State 878

131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt $default reduce using rule 131 (class-head)

State 879

360 initializer"(" expression-list ")" $default reduce using rule 360 (initializer)

State 880

363 initializer-listinitializer-clause ELLIPSIS-opt $default reduce using rule 363 (initializer-list)

State 881

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1034 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 882

227 designator"." IDENTIFIER $default reduce using rule 227 (designator)

State 883

2 COMMA-opt"," ["}"] 224 designated-initializer-clause designator brace-or-equal-initializer 226 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause 227 designator "." IDENTIFIER "." shift, and go to state 648 $default reduce using rule 2 (COMMA-opt) designated-initializer-clause go to state 1035 designator go to state 651

State 884

121 braced-init-list"{" designated-initializer-list COMMA-opt "}" "}" shift, and go to state 1036

State 885

224 designated-initializer-clausedesignator brace-or-equal-initializer $default reduce using rule 224 (designated-initializer-clause)

State 886

2 COMMA-opt"," ["}"] 19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "}" reduce using rule 2 (COMMA-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1034 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 887

120 braced-init-list"{" initializer-list COMMA-opt "}" "}" shift, and go to state 1037

State 888

137 class-name IDENTIFIER 138 | simple-template-id 163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "this" shift, and go to state 241 "(" shift, and go to state 653 "[" shift, and go to state 246 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "requires" shift, and go to state 250 "~" shift, and go to state 335 "literal" shift, and go to state 259 STRING_LITERAL shift, and go to state 117 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 primary-expression go to state 1038 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 889

137 class-name IDENTIFIER 138 | simple-template-id 162 constraint-logical-and-expression primary-expression 163 | constraint-logical-and-expression "&&" primary-expression 165 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "this" shift, and go to state 241 "(" shift, and go to state 653 "[" shift, and go to state 246 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "requires" shift, and go to state 250 "~" shift, and go to state 335 "literal" shift, and go to state 259 STRING_LITERAL shift, and go to state 117 class-name go to state 55 constraint-logical-and-expression go to state 1039 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 primary-expression go to state 656 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 890

251 enumerator-definitionenumerator "=" constant-expression $default reduce using rule 251 (enumerator-definition)

State 891

248 enum-specifierenum-head "{" enumerator-list "," "}" $default reduce using rule 248 (enum-specifier)

State 892

253 enumerator-listenumerator-list "," enumerator-definition $default reduce using rule 253 (enumerator-list)

State 893

236 enum-base":" type-specifier-seq $default reduce using rule 236 (enum-base)

State 894

496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 496 (opaque-enum-declaration)

State 895

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" "->" shift, and go to state 1040

State 896

438 module-partition-optmodule-partition $default reduce using rule 438 (module-partition-opt)

State 897

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1041

State 898

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt "private" shift, and go to state 1042

State 899

709 type-constraintnested-name-specifier-opt concept-name "<" template-argument-list-opt ">" $default reduce using rule 709 (type-constraint)

State 900

150 concept-definition"concept" concept-name "=" constraint-expression ";" ";" shift, and go to state 1043

State 901

161 constraint-expressionlogical-or-expression [";"] 397 logical-or-expressionlogical-or-expression "||" logical-and-expression "||" shift, and go to state 556 $default reduce using rule 161 (constraint-expression)

State 902

229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 1044

State 903

5 ELLIPSIS-opt %empty [",", ">"] 6 | "..." 687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1045

State 904

482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 346 "[" shift, and go to state 907 parameters-and-qualifiers go to state 1046

State 905

484 noptr-abstract-declarator"(" ptr-abstract-declarator ")" ")" shift, and go to state 1047

State 906

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [")"] 590 | ptr-abstract-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 682 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] ")" reduce using rule 589 (ptr-abstract-declarator-opt) $default reduce using rule 485 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 904 ptr-abstract-declarator go to state 912 ptr-abstract-declarator-opt go to state 913 ptr-operator go to state 906 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 907

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 159 constant-expression-opt %empty ["]"] 160 | constant-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 159 (constant-expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 622 constant-expression-opt go to state 1048 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 908

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] 702 trailing-return-type "->" type-id "->" shift, and go to state 624 $default reduce using rule 482 (noptr-abstract-declarator) trailing-return-type go to state 1049

State 909

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 159 constant-expression-opt %empty ["]"] 160 | constant-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 159 (constant-expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 622 constant-expression-opt go to state 1050 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 910

487 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers $default reduce using rule 487 (noptr-abstract-pack-declarator)

State 911

35 abstract-pack-declaratorptr-operator abstract-pack-declarator $default reduce using rule 35 (abstract-pack-declarator)

State 912

590 ptr-abstract-declarator-optptr-abstract-declarator $default reduce using rule 590 (ptr-abstract-declarator-opt)

State 913

588 ptr-abstract-declaratorptr-operator ptr-abstract-declarator-opt $default reduce using rule 588 (ptr-abstract-declarator)

State 914

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" $default reduce using rule 555 (placeholder-type-specifier)

State 915

6 ELLIPSIS-opt"..." [IDENTIFIER, "::", "operator", "decltype", "~"] 489 noptr-abstract-pack-declarator"..." [",", "...", "=", "(", ")", "[", ">"] IDENTIFIER reduce using rule 6 (ELLIPSIS-opt) "::" reduce using rule 6 (ELLIPSIS-opt) "operator" reduce using rule 6 (ELLIPSIS-opt) "decltype" reduce using rule 6 (ELLIPSIS-opt) "~" reduce using rule 6 (ELLIPSIS-opt) $default reduce using rule 489 (noptr-abstract-pack-declarator)

State 916

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 916 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 904 noptr-declarator go to state 328 ptr-abstract-declarator go to state 905 ptr-declarator go to state 329 ptr-operator go to state 1051 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 917

545 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt [",", "...", ")", ">"] 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause "=" shift, and go to state 1052 $default reduce using rule 545 (parameter-declaration)

State 918

543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator [",", "...", ")", ">"] 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause "=" shift, and go to state 1053 $default reduce using rule 543 (parameter-declaration)

State 919

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [",", "...", "=", ")", ">"] 590 | ptr-abstract-declarator 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 915 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 916 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "..." [reduce using rule 589 (ptr-abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 589 (ptr-abstract-declarator-opt) ELLIPSIS-opt go to state 164 abstract-pack-declarator go to state 911 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 904 noptr-abstract-pack-declarator go to state 688 noptr-declarator go to state 328 ptr-abstract-declarator go to state 912 ptr-abstract-declarator-opt go to state 913 ptr-declarator go to state 349 ptr-operator go to state 919 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 920

720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 720 (type-parameter)

State 921

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 721 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "::" shift, and go to state 6 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "~" shift, and go to state 335 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 1054 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 337 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 300 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 305

State 922

719 type-parametertype-constraint IDENTIFIER-opt "=" type-id $default reduce using rule 719 (type-parameter)

State 923

717 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id $default reduce using rule 717 (type-parameter)

State 924

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" $default reduce using rule 44 (alias-declaration)

State 925

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 220 defining-type-specifier-seqdefining-type-specifier attribute-specifier-seq-opt ["...", IDENTIFIER, "::", ";", "(", "&", "[", "&&", "decltype", "*"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 220 (defining-type-specifier-seq)] $default reduce using rule 220 (defining-type-specifier-seq) alignment-specifier go to state 165 attribute-specifier go to state 166

State 926

221 defining-type-specifier-seqdefining-type-specifier defining-type-specifier-seq $default reduce using rule 221 (defining-type-specifier-seq)

State 927

216 defining-type-iddefining-type-specifier-seq abstract-declarator-opt $default reduce using rule 216 (defining-type-id)

State 928

477 noexcept-expression"noexcept" "(" expression ")" $default reduce using rule 477 (noexcept-expression)

State 929

286 fold-expression"(" "..." fold-operator cast-expression ")" ")" shift, and go to state 1055

State 930

285 fold-expression"(" cast-expression fold-operator "..." ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 288 fold-operator "+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" "," shift, and go to state 708 "+" shift, and go to state 709 "-" shift, and go to state 710 "=" shift, and go to state 711 ")" shift, and go to state 1056 "&" shift, and go to state 712 "*=" shift, and go to state 713 "/=" shift, and go to state 714 "%=" shift, and go to state 715 "+=" shift, and go to state 716 "-=" shift, and go to state 717 ">>=" shift, and go to state 718 "<<=" shift, and go to state 719 "&=" shift, and go to state 720 "^=" shift, and go to state 721 "|=" shift, and go to state 722 "&&" shift, and go to state 723 "||" shift, and go to state 724 "==" shift, and go to state 725 "!=" shift, and go to state 726 "^" shift, and go to state 727 "<" shift, and go to state 728 ">" shift, and go to state 729 "*" shift, and go to state 730 "/" shift, and go to state 731 "%" shift, and go to state 732 "|" shift, and go to state 733 "<<" shift, and go to state 734 ">>" shift, and go to state 735 "<=" shift, and go to state 736 ">=" shift, and go to state 737 ".*" shift, and go to state 738 "->*" shift, and go to state 739 fold-operator go to state 1057

State 931

130 cast-expression"(" type-id ")" cast-expression $default reduce using rule 130 (cast-expression)

State 932

637 simple-capture"&" IDENTIFIER ELLIPSIS-opt $default reduce using rule 637 (simple-capture)

State 933

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" "=" shift, and go to state 377 "(" shift, and go to state 378 "{" shift, and go to state 379 brace-or-equal-initializer go to state 381 braced-init-list go to state 382 initializer go to state 1058

State 934

346 init-captureELLIPSIS-opt IDENTIFIER initializer $default reduce using rule 346 (init-capture)

State 935

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 637 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 155 IDENTIFIER shift, and go to state 745 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 746

State 936

128 capture-listcapture-list "," capture 381 lambda-capturecapture-default "," capture-list ["]"] "," shift, and go to state 750 $default reduce using rule 381 (lambda-capture)

State 937

128 capture-listcapture-list "," capture $default reduce using rule 128 (capture-list)

State 938

502 overloadable-operator"delete" "[" "]" $default reduce using rule 502 (overloadable-operator)

State 939

501 overloadable-operator"new" "[" "]" $default reduce using rule 501 (overloadable-operator)

State 940

498 operator-function-id"operator" overloadable-operator "<" template-argument-list-opt ">" ">" shift, and go to state 1059

State 941

166 conversion-declaratorptr-operator conversion-declarator-opt $default reduce using rule 166 (conversion-declarator)

State 942

616 requirement-parameter-list"(" parameter-declaration-clause ")" $default reduce using rule 616 (requirement-parameter-list)

State 943

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement"typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 1060 nested-name-specifier-opt go to state 1061 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 944

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1062 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 945

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 161 constraint-expression logical-or-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 461 nested-requirement"requires" constraint-expression ";" 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 616 requirement-parameter-list "(" parameter-declaration-clause ")" 617 requirement-parameter-list-opt %empty ["{"] 618 | requirement-parameter-list 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 624 | "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 1063 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "{" reduce using rule 617 (requirement-parameter-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 constraint-expression go to state 1064 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 901 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requirement-parameter-list go to state 504 requirement-parameter-list-opt go to state 505 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 946

613 requirementcompound-requirement $default reduce using rule 613 (requirement)

State 947

278 expressionexpression "," assignment-expression 643 simple-requirementexpression ";" "," shift, and go to state 533 ";" shift, and go to state 1065

State 948

614 requirementnested-requirement $default reduce using rule 614 (requirement)

State 949

619 requirement-seqrequirement $default reduce using rule 619 (requirement-seq)

State 950

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement "{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 461 nested-requirement "requires" constraint-expression ";" 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 611 requirement simple-requirement 612 | type-requirement 613 | compound-requirement 614 | nested-requirement 615 requirement-body"{" requirement-seq "}" 620 requirement-seqrequirement-seq requirement 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 643 simple-requirement expression ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement "typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 943 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 944 "}" shift, and go to state 1066 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 945 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 compound-requirement go to state 946 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 947 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 nested-requirement go to state 948 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requirement go to state 1067 requires-expression go to state 295 shift-expression go to state 296 simple-requirement go to state 951 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 952 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 951

611 requirementsimple-requirement $default reduce using rule 611 (requirement)

State 952

612 requirementtype-requirement $default reduce using rule 612 (requirement)

State 953

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1068

State 954

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1069

State 955

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1070

State 956

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1071

State 957

574 postfix-expression"typeid" "(" expression ")" $default reduce using rule 574 (postfix-expression)

State 958

575 postfix-expression"typeid" "(" type-id ")" $default reduce using rule 575 (postfix-expression)

State 959

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" ")" shift, and go to state 1072

State 960

742 unary-expression"sizeof" "(" type-id ")" $default reduce using rule 742 (unary-expression)

State 961

744 unary-expression"alignof" "(" type-id ")" $default reduce using rule 744 (unary-expression)

State 962

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 1073 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 963

472 new-placement"(" expression-list ")" ")" shift, and go to state 1074

State 964

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 1075 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 109

State 965

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 468 new-initializer "(" expression-list-opt ")" 469 | braced-init-list 470 new-initializer-opt %empty [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 471 | new-initializer "(" shift, and go to state 1076 "{" shift, and go to state 379 "{" [reduce using rule 470 (new-initializer-opt)] $default reduce using rule 470 (new-initializer-opt) braced-init-list go to state 1077 new-initializer go to state 1078 new-initializer-opt go to state 1079

State 966

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 462 new-declarator ptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt %empty [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 465 | new-declarator 475 new-type-idtype-specifier-seq new-declarator-opt 494 noptr-new-declarator "[" expression-opt "]" attribute-specifier-seq-opt 495 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 159 "[" shift, and go to state 1080 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "&" [reduce using rule 464 (new-declarator-opt)] "&&" [reduce using rule 464 (new-declarator-opt)] "*" [reduce using rule 464 (new-declarator-opt)] $default reduce using rule 464 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 new-declarator go to state 1081 new-declarator-opt go to state 1082 noptr-new-declarator go to state 1083 ptr-operator go to state 1084 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 967

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->", "requires"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 389 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 538 decl-specifier-seq-opt go to state 539 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 lambda-specifiers go to state 1085 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 968

387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 621 requires-clause "requires" constraint-logical-or-expression 622 requires-clause-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "alignas", "(", "[", "{", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 623 | requires-clause "requires" shift, and go to state 380 $default reduce using rule 622 (requires-clause-opt) requires-clause go to state 697 requires-clause-opt go to state 1086

State 969

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 478 noexcept-specifier"noexcept" "(" constant-expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 1087 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 970

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 702 trailing-return-type "->" type-id 703 trailing-return-type-opt %empty ["{", "requires"] 704 | trailing-return-type "alignas" shift, and go to state 157 "[" shift, and go to state 161 "->" shift, and go to state 624 $default reduce using rule 703 (trailing-return-type-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 trailing-return-type go to state 1088 trailing-return-type-opt go to state 1089

State 971

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" IDENTIFIER shift, and go to state 1090

State 972

84 attribute-specifier-seq-optattribute-specifier-seq ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 84 (attribute-specifier-seq-opt)] "extern" [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 84 (attribute-specifier-seq-opt)] "::" [reduce using rule 84 (attribute-specifier-seq-opt)] "typename" [reduce using rule 84 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 84 (attribute-specifier-seq-opt)] "class" [reduce using rule 84 (attribute-specifier-seq-opt)] "struct" [reduce using rule 84 (attribute-specifier-seq-opt)] "union" [reduce using rule 84 (attribute-specifier-seq-opt)] "const" [reduce using rule 84 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 84 (attribute-specifier-seq-opt)] "friend" [reduce using rule 84 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 84 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 84 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 84 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 84 (attribute-specifier-seq-opt)] "auto" reduce using rule 84 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 84 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "bool" [reduce using rule 84 (attribute-specifier-seq-opt)] "short" [reduce using rule 84 (attribute-specifier-seq-opt)] "int" [reduce using rule 84 (attribute-specifier-seq-opt)] "long" [reduce using rule 84 (attribute-specifier-seq-opt)] "signed" [reduce using rule 84 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 84 (attribute-specifier-seq-opt)] "float" [reduce using rule 84 (attribute-specifier-seq-opt)] "double" [reduce using rule 84 (attribute-specifier-seq-opt)] "void" [reduce using rule 84 (attribute-specifier-seq-opt)] "static" [reduce using rule 84 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 84 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 152 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 973

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 149 compound-statement "{" statement-seq-opt "}" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 171 coroutine-return-statement "co_return" expr-or-braced-init-list-opt ";" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 367 iteration-statement "while" "(" condition ")" statement 368 | "do" statement "while" "(" expression ")" ";" 369 | "for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 371 jump-statement "break" ";" 372 | "continue" ";" 373 | "return" expr-or-braced-init-list-opt ";" 374 | coroutine-return-statement 375 | "goto" IDENTIFIER ";" 376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 628 selection-statement "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 630 | "if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement 632 | "switch" "(" init-statement-opt condition ")" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 665 statementattribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 671 | attribute-specifier-seq-opt try-block 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 707 try-block "try" compound-statement handler-seq 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 1091 "inline" shift, and go to state 150 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 242 "-" shift, and go to state 243 "using" shift, and go to state 156 "alignas" shift, and go to state 157 "(" shift, and go to state 244 "&" shift, and go to state 245 "asm" shift, and go to state 160 "[" shift, and go to state 1092 "co_await" shift, and go to state 247 "{" shift, and go to state 793 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "co_return" shift, and go to state 1093 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 249 "default" shift, and go to state 1094 "try" shift, and go to state 1095 "while" shift, and go to state 1096 "do" shift, and go to state 1097 "for" shift, and go to state 1098 "break" shift, and go to state 1099 "continue" shift, and go to state 1100 "return" shift, and go to state 1101 "goto" shift, and go to state 1102 "case" shift, and go to state 1103 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "if" shift, and go to state 1104 "switch" shift, and go to state 1105 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ";" reduce using rule 282 (expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alignment-specifier go to state 165 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier go to state 166 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 compound-statement go to state 1106 conditional-expression go to state 271 conversion-function-id go to state 272 coroutine-return-statement go to state 1107 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1108 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1109 expression-opt go to state 1110 expression-statement go to state 1111 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 iteration-statement go to state 1112 jump-statement go to state 1113 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 selection-statement go to state 1114 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 storage-class-specifier go to state 99 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 try-block go to state 1115 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 974

210 declaration-statementblock-declaration $default reduce using rule 210 (declaration-statement)

State 975

670 statementdeclaration-statement $default reduce using rule 670 (statement)

State 976

664 statementlabeled-statement $default reduce using rule 664 (statement)

State 977

672 statement-seqstatement $default reduce using rule 672 (statement-seq)

State 978

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 673 statement-seqstatement-seq statement 675 statement-seq-optstatement-seq ["}"] 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 675 (statement-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1116 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 979

149 compound-statement"{" statement-seq-opt "}" "}" shift, and go to state 1117

State 980

695 template-idliteral-operator-id "<" template-argument-list-opt ">" $default reduce using rule 695 (template-id)

State 981

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 1118 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 982

694 template-idoperator-function-id "<" template-argument-list-opt ">" $default reduce using rule 694 (template-id)

State 983

561 postfix-expressionpostfix-expression "(" expression-list-opt ")" $default reduce using rule 561 (postfix-expression)

State 984

560 postfix-expressionpostfix-expression "[" expression-list-opt "]" $default reduce using rule 560 (postfix-expression)

State 985

567 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression $default reduce using rule 567 (postfix-expression)

State 986

566 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression $default reduce using rule 566 (postfix-expression)

State 987

562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" $default reduce using rule 562 (postfix-expression)

State 988

563 postfix-expressiontypename-specifier "(" expression-list-opt ")" $default reduce using rule 563 (postfix-expression)

State 989

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-body declaration-seq-opt 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 460 | "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 829 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 1119 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 990

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" ";" shift, and go to state 1120

State 991

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" "}" shift, and go to state 1121

State 992

754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" $default reduce using rule 754 (unnamed-namespace-definition)

State 993

767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" $default reduce using rule 767 (using-directive)

State 994

46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" $default reduce using rule 46 (alignment-specifier)

State 995

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" $default reduce using rule 45 (alignment-specifier)

State 996

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" $default reduce using rule 49 (asm-declaration)

State 997

87 attribute-using-prefix"using" attribute-namespace ":" $default reduce using rule 87 (attribute-using-prefix)

State 998

74 attribute-listattribute "..." $default reduce using rule 74 (attribute-list)

State 999

67 attribute attribute-token attribute-argument-clause-opt 73 attribute-listattribute-list "," attribute-opt 75 | attribute-list "," attribute "..." 76 attribute-namespace IDENTIFIER 77 attribute-opt %empty [",", "]"] 78 | attribute 79 attribute-scoped-token attribute-namespace "::" IDENTIFIER 85 attribute-token IDENTIFIER 86 | attribute-scoped-token IDENTIFIER shift, and go to state 837 $default reduce using rule 77 (attribute-opt) attribute go to state 1122 attribute-namespace go to state 840 attribute-opt go to state 1123 attribute-scoped-token go to state 842 attribute-token go to state 843

State 1000

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "]" shift, and go to state 1124

State 1001

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER IDENTIFIER shift, and go to state 1125

State 1002

68 attribute-argument-clause"(" balanced-token-seq-opt ")" 91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty [")"] 98 | balanced-token-seq "(" shift, and go to state 1126 "[" shift, and go to state 1127 "{" shift, and go to state 1128 BALANCED_TOKEN shift, and go to state 1129 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1130 balanced-token-seq go to state 1131 balanced-token-seq-opt go to state 1132

State 1003

70 attribute-argument-clause-optattribute-argument-clause $default reduce using rule 70 (attribute-argument-clause-opt)

State 1004

67 attributeattribute-token attribute-argument-clause-opt $default reduce using rule 67 (attribute)

State 1005

343 identifier-listidentifier-list "," IDENTIFIER IDENTIFIER shift, and go to state 1133

State 1006

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "=" shift, and go to state 377 "(" shift, and go to state 378 "{" shift, and go to state 379 brace-or-equal-initializer go to state 381 braced-init-list go to state 382 initializer go to state 1134

State 1007

326 function-body"=" "delete" ";" ";" shift, and go to state 1135

State 1008

325 function-body"=" "default" ";" ";" shift, and go to state 1136

State 1009

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 401 mem-initializer-idIDENTIFIER ["(", "{"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) $default reduce using rule 401 (mem-initializer-id)

State 1010

400 mem-initializer-idclass-or-decltype $default reduce using rule 400 (mem-initializer-id)

State 1011

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 402 mem-initializer-listmem-initializer ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1137

State 1012

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 398 mem-initializermem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list "(" shift, and go to state 1138 "{" shift, and go to state 379 braced-init-list go to state 1139

State 1013

172 ctor-initializer":" mem-initializer-list ["{"] 403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt "," shift, and go to state 1140 $default reduce using rule 172 (ctor-initializer)

State 1014

149 compound-statement "{" statement-seq-opt "}" 331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq "{" shift, and go to state 793 compound-statement go to state 1141

State 1015

323 function-bodyctor-initializer-opt compound-statement $default reduce using rule 323 (function-body)

State 1016

553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty [",", "...", "noexcept", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] 605 | ref-qualifier "&" shift, and go to state 338 "&&" shift, and go to state 339 $default reduce using rule 604 (ref-qualifier-opt) ref-qualifier go to state 340 ref-qualifier-opt go to state 1142

State 1017

548 parameter-declaration-clauseparameter-declaration-list "," "..." $default reduce using rule 548 (parameter-declaration-clause)

State 1018

550 parameter-declaration-listparameter-declaration-list "," parameter-declaration $default reduce using rule 550 (parameter-declaration-list)

State 1019

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 492 (noptr-declarator)] $default reduce using rule 492 (noptr-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 1020

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt "alignas" shift, and go to state 157 "[" shift, and go to state 161 ":" shift, and go to state 1143 alignment-specifier go to state 165 attribute-specifier go to state 166

State 1021

119 brace-or-equal-initializer-optbrace-or-equal-initializer $default reduce using rule 119 (brace-or-equal-initializer-opt)

State 1022

417 member-declaratordeclarator brace-or-equal-initializer-opt $default reduce using rule 417 (member-declarator)

State 1023

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 328 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq 416 member-declaratordeclarator requires-clause [",", ";"] "=" shift, and go to state 847 ":" shift, and go to state 848 "try" shift, and go to state 849 "{" reduce using rule 173 (ctor-initializer-opt) $default reduce using rule 416 (member-declarator) ctor-initializer go to state 850 ctor-initializer-opt go to state 851 function-body go to state 852 function-try-block go to state 853

State 1024

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 597 pure-specifier "=" '0' 598 pure-specifier-opt %empty [",", ";"] 599 | pure-specifier "=" shift, and go to state 1144 ":" shift, and go to state 848 "try" shift, and go to state 849 "{" reduce using rule 173 (ctor-initializer-opt) $default reduce using rule 598 (pure-specifier-opt) ctor-initializer go to state 850 ctor-initializer-opt go to state 851 function-body go to state 855 function-try-block go to state 853 pure-specifier go to state 1145 pure-specifier-opt go to state 1146

State 1025

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 11 IDENTIFIER-opt %empty ["alignas", "[", ":"] 12 | IDENTIFIER 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 415 member-declarator declarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 420 member-declarator-listmember-declarator-list "," member-declarator 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 863 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 164 IDENTIFIER-opt go to state 864 class-name go to state 55 declarator go to state 1147 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 member-declarator go to state 1148 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1026

404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" $default reduce using rule 404 (member-declaration)

State 1027

40 access-specifier-optaccess-specifier $default reduce using rule 40 (access-specifier-opt)

State 1028

103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1149 decltype-specifier go to state 873 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 874 nested-name-specifier-opt go to state 875 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1029

28 VIRTUAL-opt"virtual" $default reduce using rule 28 (VIRTUAL-opt)

State 1030

104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1150 decltype-specifier go to state 873 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 874 nested-name-specifier-opt go to state 875 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1031

22 TEMPLATE-opt"template" [IDENTIFIER] 140 class-or-decltypenested-name-specifier "template" simple-template-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 191 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] simple-template-id go to state 1151 template-name go to state 102

State 1032

139 class-or-decltypenested-name-specifier-opt type-name $default reduce using rule 139 (class-or-decltype)

State 1033

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1152

State 1034

5 ELLIPSIS-opt %empty [",", ")", "]", "}"] 6 | "..." 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1153

State 1035

226 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause $default reduce using rule 226 (designated-initializer-list)

State 1036

121 braced-init-list"{" designated-initializer-list COMMA-opt "}" $default reduce using rule 121 (braced-init-list)

State 1037

120 braced-init-list"{" initializer-list COMMA-opt "}" $default reduce using rule 120 (braced-init-list)

State 1038

163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression $default reduce using rule 163 (constraint-logical-and-expression)

State 1039

163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 165 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "&&" shift, and go to state 888 "&&" [reduce using rule 165 (constraint-logical-or-expression)] $default reduce using rule 165 (constraint-logical-or-expression)

State 1040

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 191 simple-template-id go to state 1154 template-name go to state 102

State 1041

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" ";" shift, and go to state 1155 "alignas" shift, and go to state 157 "[" shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166

State 1042

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt ";" shift, and go to state 1156

State 1043

150 concept-definition"concept" concept-name "=" constraint-expression ";" $default reduce using rule 150 (concept-definition)

State 1044

229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER $default reduce using rule 229 (elaborated-type-specifier)

State 1045

687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt $default reduce using rule 687 (template-argument-list)

State 1046

482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers $default reduce using rule 482 (noptr-abstract-declarator)

State 1047

484 noptr-abstract-declarator"(" ptr-abstract-declarator ")" $default reduce using rule 484 (noptr-abstract-declarator)

State 1048

483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1157

State 1049

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type $default reduce using rule 30 (abstract-declarator)

State 1050

488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1158

State 1051

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [")"] 590 | ptr-abstract-declarator 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 916 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] ")" reduce using rule 589 (ptr-abstract-declarator-opt) "[" reduce using rule 485 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 904 noptr-declarator go to state 328 ptr-abstract-declarator go to state 912 ptr-abstract-declarator-opt go to state 913 ptr-declarator go to state 349 ptr-operator go to state 1051 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1052

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 546 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1159 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1053

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 544 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1160 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1054

721 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression $default reduce using rule 721 (type-parameter)

State 1055

286 fold-expression"(" "..." fold-operator cast-expression ")" $default reduce using rule 286 (fold-expression)

State 1056

285 fold-expression"(" cast-expression fold-operator "..." ")" $default reduce using rule 285 (fold-expression)

State 1057

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 1161 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 1058

347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer $default reduce using rule 347 (init-capture)

State 1059

498 operator-function-id"operator" overloadable-operator "<" template-argument-list-opt ">" $default reduce using rule 498 (operator-function-id)

State 1060

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 228 "template" shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 230

State 1061

137 class-name IDENTIFIER 138 | simple-template-id 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement"typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 506 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1162 typedef-name go to state 108

State 1062

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 278 expressionexpression "," assignment-expression "," shift, and go to state 533 "}" shift, and go to state 1163

State 1063

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 616 requirement-parameter-list"(" parameter-declaration-clause ")" 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 438 IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 "..." [reduce using rule 551 (parameter-declaration-list-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "this" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] ")" reduce using rule 551 (parameter-declaration-list-opt) "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 await-expression go to state 268 cast-expression go to state 439 class-key go to state 405 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 440 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 parameter-declaration go to state 618 parameter-declaration-clause go to state 762 parameter-declaration-list go to state 620 parameter-declaration-list-opt go to state 621 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 408 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 441 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 414 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1064

461 nested-requirement"requires" constraint-expression ";" ";" shift, and go to state 1164

State 1065

643 simple-requirementexpression ";" $default reduce using rule 643 (simple-requirement)

State 1066

615 requirement-body"{" requirement-seq "}" $default reduce using rule 615 (requirement-body)

State 1067

620 requirement-seqrequirement-seq requirement $default reduce using rule 620 (requirement-seq)

State 1068

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1165 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1069

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1166 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1070

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1167 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1071

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1168 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1072

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" $default reduce using rule 743 (unary-expression)

State 1073

223 delete-expressionSCOPE-opt "delete" "[" "]" cast-expression $default reduce using rule 223 (delete-expression)

State 1074

472 new-placement"(" expression-list ")" $default reduce using rule 472 (new-placement)

State 1075

467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt ")" shift, and go to state 1169

State 1076

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 468 new-initializer"(" expression-list-opt ")" 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 809 expression-list-opt go to state 1170 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1077

469 new-initializerbraced-init-list $default reduce using rule 469 (new-initializer)

State 1078

471 new-initializer-optnew-initializer $default reduce using rule 471 (new-initializer-opt)

State 1079

466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt $default reduce using rule 466 (new-expression)

State 1080

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty ["]"] 283 | expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 282 (expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1109 expression-opt go to state 1171 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1081

465 new-declarator-optnew-declarator $default reduce using rule 465 (new-declarator-opt)

State 1082

475 new-type-idtype-specifier-seq new-declarator-opt $default reduce using rule 475 (new-type-id)

State 1083

463 new-declaratornoptr-new-declarator [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt "[" shift, and go to state 1172 $default reduce using rule 463 (new-declarator)

State 1084

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 462 new-declarator ptr-operator new-declarator-opt 462 | ptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt %empty [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 465 | new-declarator 494 noptr-new-declarator "[" expression-opt "]" attribute-specifier-seq-opt 495 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 159 "[" shift, and go to state 1080 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 "&" [reduce using rule 464 (new-declarator-opt)] "&&" [reduce using rule 464 (new-declarator-opt)] "*" [reduce using rule 464 (new-declarator-opt)] $default reduce using rule 464 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 new-declarator go to state 1081 new-declarator-opt go to state 1173 noptr-new-declarator go to state 1083 ptr-operator go to state 1084 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1085

385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 621 requires-clause "requires" constraint-logical-or-expression 622 requires-clause-opt %empty ["{"] 623 | requires-clause "requires" shift, and go to state 380 $default reduce using rule 622 (requires-clause-opt) requires-clause go to state 697 requires-clause-opt go to state 1174

State 1086

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 384 lambda-declarator lambda-specifiers 385 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 389 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "(" shift, and go to state 536 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 538 decl-specifier-seq-opt go to state 539 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 lambda-declarator go to state 1175 lambda-specifiers go to state 541 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1087

478 noexcept-specifier"noexcept" "(" constant-expression ")" ")" shift, and go to state 1176

State 1088

704 trailing-return-type-opttrailing-return-type $default reduce using rule 704 (trailing-return-type-opt)

State 1089

389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 389 (lambda-specifiers)

State 1090

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" "=" shift, and go to state 319

State 1091

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] 755 unqualified-idIDENTIFIER [",", "+", "-", "=", ";", "(", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "<=>", "?", "&&", "||", "->", ".", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "++", "--"] ":" shift, and go to state 1177 "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) "<" [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)

State 1092

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 123 capture simple-capture 124 | init-capture 125 capture-default "&" 126 | "=" 127 capture-list capture 128 | capture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture capture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt %empty ["]"] 383 | lambda-capture 388 lambda-introducer"[" lambda-capture-opt "]" 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 155 IDENTIFIER shift, and go to state 442 "this" shift, and go to state 443 "=" shift, and go to state 444 "&" shift, and go to state 445 "[" shift, and go to state 332 "*" shift, and go to state 446 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 382 (lambda-capture-opt) ELLIPSIS-opt go to state 447 capture go to state 448 capture-default go to state 449 capture-list go to state 450 init-capture go to state 451 lambda-capture go to state 452 lambda-capture-opt go to state 453 simple-capture go to state 454

State 1093

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 273 expr-or-braced-init-list expression 274 | braced-init-list 275 expr-or-braced-init-list-opt %empty [";"] 276 | expr-or-braced-init-list 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ";" reduce using rule 275 (expr-or-braced-init-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 braced-init-list go to state 1178 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expr-or-braced-init-list go to state 1179 expr-or-braced-init-list-opt go to state 1180 expression go to state 1181 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1094

378 labeled-statementattribute-specifier-seq-opt "default" ":" statement ":" shift, and go to state 1182

State 1095

149 compound-statement "{" statement-seq-opt "}" 707 try-block"try" compound-statement handler-seq "{" shift, and go to state 793 compound-statement go to state 1183

State 1096

367 iteration-statement"while" "(" condition ")" statement "(" shift, and go to state 1184

State 1097

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 368 iteration-statement"do" statement "while" "(" expression ")" ";" 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1185 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1098

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement "(" shift, and go to state 1186

State 1099

371 jump-statement"break" ";" ";" shift, and go to state 1187

State 1100

372 jump-statement"continue" ";" ";" shift, and go to state 1188

State 1101

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 273 expr-or-braced-init-list expression 274 | braced-init-list 275 expr-or-braced-init-list-opt %empty [";"] 276 | expr-or-braced-init-list 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 373 jump-statement"return" expr-or-braced-init-list-opt ";" 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ";" reduce using rule 275 (expr-or-braced-init-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 braced-init-list go to state 1178 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expr-or-braced-init-list go to state 1179 expr-or-braced-init-list-opt go to state 1189 expression go to state 1181 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1102

375 jump-statement"goto" IDENTIFIER ";" IDENTIFIER shift, and go to state 1190

State 1103

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 377 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 1191 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 1104

3 CONSTEXPR-opt %empty ["("] 4 | "constexpr" 17 NOT-opt %empty ["consteval"] 18 | "!" 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 630 | "if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement "constexpr" shift, and go to state 1192 "!" shift, and go to state 1193 "consteval" reduce using rule 17 (NOT-opt) $default reduce using rule 3 (CONSTEXPR-opt) CONSTEXPR-opt go to state 1194 NOT-opt go to state 1195

State 1105

632 selection-statement"switch" "(" init-statement-opt condition ")" statement "(" shift, and go to state 1196

State 1106

666 statementattribute-specifier-seq-opt compound-statement $default reduce using rule 666 (statement)

State 1107

374 jump-statementcoroutine-return-statement $default reduce using rule 374 (jump-statement)

State 1108

602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty ["["] 605 | ref-qualifier 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "&" shift, and go to state 338 "&&" shift, and go to state 339 $default reduce using rule 604 (ref-qualifier-opt) ref-qualifier go to state 340 ref-qualifier-opt go to state 341

State 1109

278 expressionexpression "," assignment-expression 283 expression-optexpression [";", ")", "]"] "," shift, and go to state 533 $default reduce using rule 283 (expression-opt)

State 1110

284 expression-statementexpression-opt ";" ";" shift, and go to state 1197

State 1111

665 statementattribute-specifier-seq-opt expression-statement $default reduce using rule 665 (statement)

State 1112

668 statementattribute-specifier-seq-opt iteration-statement $default reduce using rule 668 (statement)

State 1113

669 statementattribute-specifier-seq-opt jump-statement $default reduce using rule 669 (statement)

State 1114

667 statementattribute-specifier-seq-opt selection-statement $default reduce using rule 667 (statement)

State 1115

671 statementattribute-specifier-seq-opt try-block $default reduce using rule 671 (statement)

State 1116

673 statement-seqstatement-seq statement $default reduce using rule 673 (statement-seq)

State 1117

149 compound-statement"{" statement-seq-opt "}" $default reduce using rule 149 (compound-statement)

State 1118

157 conditional-expressionlogical-or-expression "?" expression ":" assignment-expression $default reduce using rule 157 (conditional-expression)

State 1119

460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "}" shift, and go to state 1198

State 1120

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" $default reduce using rule 677 (static_assert-declaration)

State 1121

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" $default reduce using rule 443 (named-namespace-definition)

State 1122

75 attribute-listattribute-list "," attribute "..." 78 attribute-optattribute [",", "]"] "..." shift, and go to state 1199 $default reduce using rule 78 (attribute-opt)

State 1123

73 attribute-listattribute-list "," attribute-opt $default reduce using rule 73 (attribute-list)

State 1124

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" $default reduce using rule 80 (attribute-specifier)

State 1125

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER $default reduce using rule 79 (attribute-scoped-token)

State 1126

91 balanced-token "(" balanced-token-seq-opt ")" 91 | "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty [")"] 98 | balanced-token-seq "(" shift, and go to state 1126 "[" shift, and go to state 1127 "{" shift, and go to state 1128 BALANCED_TOKEN shift, and go to state 1129 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1130 balanced-token-seq go to state 1131 balanced-token-seq-opt go to state 1200

State 1127

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty ["]"] 98 | balanced-token-seq "(" shift, and go to state 1126 "[" shift, and go to state 1127 "{" shift, and go to state 1128 BALANCED_TOKEN shift, and go to state 1129 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1130 balanced-token-seq go to state 1131 balanced-token-seq-opt go to state 1201

State 1128

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty ["}"] 98 | balanced-token-seq "(" shift, and go to state 1126 "[" shift, and go to state 1127 "{" shift, and go to state 1128 BALANCED_TOKEN shift, and go to state 1129 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1130 balanced-token-seq go to state 1131 balanced-token-seq-opt go to state 1202

State 1129

94 balanced-tokenBALANCED_TOKEN $default reduce using rule 94 (balanced-token)

State 1130

95 balanced-token-seqbalanced-token $default reduce using rule 95 (balanced-token-seq)

State 1131

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 96 balanced-token-seqbalanced-token-seq balanced-token 98 balanced-token-seq-optbalanced-token-seq [")", "]", "}"] "(" shift, and go to state 1126 "[" shift, and go to state 1127 "{" shift, and go to state 1128 BALANCED_TOKEN shift, and go to state 1129 $default reduce using rule 98 (balanced-token-seq-opt) balanced-token go to state 1203

State 1132

68 attribute-argument-clause"(" balanced-token-seq-opt ")" ")" shift, and go to state 1204

State 1133

343 identifier-listidentifier-list "," IDENTIFIER $default reduce using rule 343 (identifier-list)

State 1134

642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" ";" shift, and go to state 1205

State 1135

326 function-body"=" "delete" ";" $default reduce using rule 326 (function-body)

State 1136

325 function-body"=" "default" ";" $default reduce using rule 325 (function-body)

State 1137

402 mem-initializer-listmem-initializer ELLIPSIS-opt $default reduce using rule 402 (mem-initializer-list)

State 1138

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 398 mem-initializermem-initializer-id "(" expression-list-opt ")" 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 641 await-expression go to state 268 braced-init-list go to state 642 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 809 expression-list-opt go to state 1206 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 645 initializer-list go to state 646 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1139

399 mem-initializermem-initializer-id braced-init-list $default reduce using rule 399 (mem-initializer)

State 1140

137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 398 mem-initializer mem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list 400 mem-initializer-id class-or-decltype 401 | IDENTIFIER 403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 1009 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1010 decltype-specifier go to state 873 enum-name go to state 71 mem-initializer go to state 1207 mem-initializer-id go to state 1012 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 874 nested-name-specifier-opt go to state 875 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1141

331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq 335 handler "catch" "(" exception-declaration ")" compound-statement 336 handler-seq handler handler-seq-opt "catch" shift, and go to state 1208 handler go to state 1209 handler-seq go to state 1210

State 1142

478 noexcept-specifier "noexcept" "(" constant-expression ")" 479 | "noexcept" 480 noexcept-specifier-opt %empty [",", "...", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] 481 | noexcept-specifier 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "noexcept" shift, and go to state 790 $default reduce using rule 480 (noexcept-specifier-opt) noexcept-specifier go to state 791 noexcept-specifier-opt go to state 1211

State 1143

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 1212 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 1144

325 function-body"=" "default" ";" 326 | "=" "delete" ";" 597 pure-specifier"=" '0' "delete" shift, and go to state 1007 "default" shift, and go to state 1008 '0' shift, and go to state 1213

State 1145

599 pure-specifier-optpure-specifier $default reduce using rule 599 (pure-specifier-opt)

State 1146

415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt $default reduce using rule 415 (member-declarator)

State 1147

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt %empty [",", ";"] 119 | brace-or-equal-initializer 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 621 requires-clause "requires" constraint-logical-or-expression 769 virt-specifier "override" 770 | "final" 771 virt-specifier-seq virt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt %empty [",", "=", ";"] 774 | virt-specifier-seq "=" shift, and go to state 377 "{" shift, and go to state 379 "final" shift, and go to state 611 "requires" shift, and go to state 380 "override" shift, and go to state 612 "," reduce using rule 118 (brace-or-equal-initializer-opt) "," [reduce using rule 773 (virt-specifier-seq-opt)] "=" [reduce using rule 773 (virt-specifier-seq-opt)] ";" reduce using rule 118 (brace-or-equal-initializer-opt) ";" [reduce using rule 773 (virt-specifier-seq-opt)] $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1021 brace-or-equal-initializer-opt go to state 1022 braced-init-list go to state 382 requires-clause go to state 1214 virt-specifier go to state 614 virt-specifier-seq go to state 615 virt-specifier-seq-opt go to state 1215

State 1148

420 member-declarator-listmember-declarator-list "," member-declarator $default reduce using rule 420 (member-declarator-list)

State 1149

103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype $default reduce using rule 103 (base-specifier)

State 1150

104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype $default reduce using rule 104 (base-specifier)

State 1151

140 class-or-decltypenested-name-specifier "template" simple-template-id $default reduce using rule 140 (class-or-decltype)

State 1152

106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 106 (base-specifier-list)

State 1153

364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt $default reduce using rule 364 (initializer-list)

State 1154

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" ";" shift, and go to state 1216

State 1155

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" $default reduce using rule 427 (module-declaration)

State 1156

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty [$end] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 1217 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1157

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1218

State 1158

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1219

State 1159

546 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause $default reduce using rule 546 (parameter-declaration)

State 1160

544 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause $default reduce using rule 544 (parameter-declaration)

State 1161

287 fold-expression"(" cast-expression fold-operator "..." fold-operator cast-expression ")" ")" shift, and go to state 1220

State 1162

724 type-requirement"typename" nested-name-specifier-opt type-name ";" ";" shift, and go to state 1221

State 1163

15 NOEXCEPT-opt %empty [";", "->"] 16 | "noexcept" 148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" "noexcept" shift, and go to state 1222 $default reduce using rule 15 (NOEXCEPT-opt) NOEXCEPT-opt go to state 1223

State 1164

461 nested-requirement"requires" constraint-expression ";" $default reduce using rule 461 (nested-requirement)

State 1165

278 expressionexpression "," assignment-expression 570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 1224

State 1166

278 expressionexpression "," assignment-expression 571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 1225

State 1167

278 expressionexpression "," assignment-expression 572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 1226

State 1168

278 expressionexpression "," assignment-expression 573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 533 ")" shift, and go to state 1227

State 1169

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 468 new-initializer "(" expression-list-opt ")" 469 | braced-init-list 470 new-initializer-opt %empty [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 471 | new-initializer "(" shift, and go to state 1076 "{" shift, and go to state 379 "{" [reduce using rule 470 (new-initializer-opt)] $default reduce using rule 470 (new-initializer-opt) braced-init-list go to state 1077 new-initializer go to state 1078 new-initializer-opt go to state 1228

State 1170

468 new-initializer"(" expression-list-opt ")" ")" shift, and go to state 1229

State 1171

494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1230

State 1172

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 308 constant-expression go to state 1231 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 310 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305

State 1173

462 new-declaratorptr-operator new-declarator-opt $default reduce using rule 462 (new-declarator)

State 1174

385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt $default reduce using rule 385 (lambda-declarator)

State 1175

149 compound-statement "{" statement-seq-opt "}" 387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement "{" shift, and go to state 793 compound-statement go to state 1232

State 1176

478 noexcept-specifier"noexcept" "(" constant-expression ")" $default reduce using rule 478 (noexcept-specifier)

State 1177

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 376 | attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1233 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1178

274 expr-or-braced-init-listbraced-init-list $default reduce using rule 274 (expr-or-braced-init-list)

State 1179

276 expr-or-braced-init-list-optexpr-or-braced-init-list $default reduce using rule 276 (expr-or-braced-init-list-opt)

State 1180

171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" ";" shift, and go to state 1234

State 1181

273 expr-or-braced-init-listexpression [";", ")"] 278 expressionexpression "," assignment-expression "," shift, and go to state 533 $default reduce using rule 273 (expr-or-braced-init-list)

State 1182

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1235 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1183

335 handler "catch" "(" exception-declaration ")" compound-statement 336 handler-seq handler handler-seq-opt 707 try-block"try" compound-statement handler-seq "catch" shift, and go to state 1208 handler go to state 1209 handler-seq go to state 1236

State 1184

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 367 iteration-statement"while" "(" condition ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1237 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1238 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1239 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1185

368 iteration-statement"do" statement "while" "(" expression ")" ";" "while" shift, and go to state 1240

State 1186

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 354 init-statement expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 358 | init-statement 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 237 "inline" shift, and go to state 150 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 242 "-" shift, and go to state 243 "using" shift, and go to state 1241 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 357 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 357 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 357 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 357 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 357 (init-statement-opt)] ";" reduce using rule 282 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 357 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 357 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 357 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 357 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 357 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 357 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 357 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 357 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 357 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 357 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 357 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 357 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 357 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 357 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 357 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 357 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 357 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 357 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 357 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 357 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 357 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 357 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 357 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 357 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 357 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 357 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 357 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 357 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 357 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alias-declaration go to state 1242 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 1243 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1109 expression-opt go to state 1110 expression-statement go to state 1244 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 init-statement go to state 1245 init-statement-opt go to state 1246 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-declaration go to state 1247 simple-template-id go to state 297 simple-type-specifier go to state 408 storage-class-specifier go to state 99 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1187

371 jump-statement"break" ";" $default reduce using rule 371 (jump-statement)

State 1188

372 jump-statement"continue" ";" $default reduce using rule 372 (jump-statement)

State 1189

373 jump-statement"return" expr-or-braced-init-list-opt ";" ";" shift, and go to state 1248

State 1190

375 jump-statement"goto" IDENTIFIER ";" ";" shift, and go to state 1249

State 1191

377 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement ":" shift, and go to state 1250

State 1192

4 CONSTEXPR-opt"constexpr" $default reduce using rule 4 (CONSTEXPR-opt)

State 1193

18 NOT-opt"!" $default reduce using rule 18 (NOT-opt)

State 1194

628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement "(" shift, and go to state 1251

State 1195

630 selection-statement"if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement "consteval" shift, and go to state 1252

State 1196

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 354 init-statement expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "alignas", "(", "&", "[", "co_await", "class", "struct", "union", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 358 | init-statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 632 selection-statement"switch" "(" init-statement-opt condition ")" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 237 "inline" shift, and go to state 150 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 242 "-" shift, and go to state 243 "using" shift, and go to state 1241 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 357 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 357 (init-statement-opt)] "noexcept" [reduce using rule 357 (init-statement-opt)] "!" [reduce using rule 357 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 357 (init-statement-opt)] "this" [reduce using rule 357 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 357 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 357 (init-statement-opt)] "+" [reduce using rule 357 (init-statement-opt)] "-" [reduce using rule 357 (init-statement-opt)] ";" reduce using rule 282 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 357 (init-statement-opt)] "(" [reduce using rule 357 (init-statement-opt)] "&" [reduce using rule 357 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 357 (init-statement-opt)] "co_await" [reduce using rule 357 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 357 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 357 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 357 (init-statement-opt)] "operator" [reduce using rule 357 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 357 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 357 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 357 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 357 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 357 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "delete" [reduce using rule 357 (init-statement-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 357 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 357 (init-statement-opt)] "*" [reduce using rule 357 (init-statement-opt)] "requires" [reduce using rule 357 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "new" [reduce using rule 357 (init-statement-opt)] "~" [reduce using rule 357 (init-statement-opt)] "++" [reduce using rule 357 (init-statement-opt)] "--" [reduce using rule 357 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 357 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "dynamic_cast" [reduce using rule 357 (init-statement-opt)] "static_cast" [reduce using rule 357 (init-statement-opt)] "reinterpret_cast" [reduce using rule 357 (init-statement-opt)] "const_cast" [reduce using rule 357 (init-statement-opt)] "typeid" [reduce using rule 357 (init-statement-opt)] "literal" [reduce using rule 357 (init-statement-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 357 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 357 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 357 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 357 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 357 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 357 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 357 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 357 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 357 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 357 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 357 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 357 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 357 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 357 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 357 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 357 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 357 (init-statement-opt)] STRING_LITERAL [reduce using rule 357 (init-statement-opt)] "throw" [reduce using rule 357 (init-statement-opt)] "sizeof" [reduce using rule 357 (init-statement-opt)] "alignof" [reduce using rule 357 (init-statement-opt)] "co_yield" [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alias-declaration go to state 1242 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 1243 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1109 expression-opt go to state 1110 expression-statement go to state 1244 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 init-statement go to state 1253 init-statement-opt go to state 1254 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-declaration go to state 1247 simple-template-id go to state 297 simple-type-specifier go to state 408 storage-class-specifier go to state 99 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1197

284 expression-statementexpression-opt ";" $default reduce using rule 284 (expression-statement)

State 1198

460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" $default reduce using rule 460 (nested-namespace-definition)

State 1199

75 attribute-listattribute-list "," attribute "..." $default reduce using rule 75 (attribute-list)

State 1200

91 balanced-token"(" balanced-token-seq-opt ")" ")" shift, and go to state 1255

State 1201

92 balanced-token"[" balanced-token-seq-opt "]" "]" shift, and go to state 1256

State 1202

93 balanced-token"{" balanced-token-seq-opt "}" "}" shift, and go to state 1257

State 1203

96 balanced-token-seqbalanced-token-seq balanced-token $default reduce using rule 96 (balanced-token-seq)

State 1204

68 attribute-argument-clause"(" balanced-token-seq-opt ")" $default reduce using rule 68 (attribute-argument-clause)

State 1205

642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" $default reduce using rule 642 (simple-declaration)

State 1206

398 mem-initializermem-initializer-id "(" expression-list-opt ")" ")" shift, and go to state 1258

State 1207

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt "..." shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1259

State 1208

335 handler"catch" "(" exception-declaration ")" compound-statement "(" shift, and go to state 1260

State 1209

335 handler "catch" "(" exception-declaration ")" compound-statement 336 handler-seq handler handler-seq-opt 336 | handler handler-seq-opt 337 handler-seq-opt %empty [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "template", "this", "typename", "virtual", "private", "protected", "public", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", ":", "co_await", "{", "}", "class", "struct", "union", "&&", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "module", "while", "do", "for", "break", "continue", "return", "goto", "case", "import", "namespace", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 338 | handler-seq "catch" shift, and go to state 1208 $default reduce using rule 337 (handler-seq-opt) handler go to state 1209 handler-seq go to state 1261 handler-seq-opt go to state 1262

State 1210

331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq $default reduce using rule 331 (function-try-block)

State 1211

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1263

State 1212

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt %empty [",", ";"] 119 | brace-or-equal-initializer 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt "=" shift, and go to state 377 "{" shift, and go to state 379 $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1021 brace-or-equal-initializer-opt go to state 1264 braced-init-list go to state 382

State 1213

597 pure-specifier"=" '0' $default reduce using rule 597 (pure-specifier)

State 1214

416 member-declaratordeclarator requires-clause $default reduce using rule 416 (member-declarator)

State 1215

415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 597 pure-specifier "=" '0' 598 pure-specifier-opt %empty [",", ";"] 599 | pure-specifier "=" shift, and go to state 1265 $default reduce using rule 598 (pure-specifier-opt) pure-specifier go to state 1145 pure-specifier-opt go to state 1146

State 1216

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" $default reduce using rule 215 (deduction-guide)

State 1217

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt $default reduce using rule 584 (private-module-fragment)

State 1218

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 483 (noptr-abstract-declarator)] $default reduce using rule 483 (noptr-abstract-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 1219

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 488 (noptr-abstract-pack-declarator)] $default reduce using rule 488 (noptr-abstract-pack-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 1220

287 fold-expression"(" cast-expression fold-operator "..." fold-operator cast-expression ")" $default reduce using rule 287 (fold-expression)

State 1221

724 type-requirement"typename" nested-name-specifier-opt type-name ";" $default reduce using rule 724 (type-requirement)

State 1222

16 NOEXCEPT-opt"noexcept" $default reduce using rule 16 (NOEXCEPT-opt)

State 1223

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 625 return-type-requirement "->" type-constraint 626 return-type-requirement-opt %empty [";"] 627 | return-type-requirement "->" shift, and go to state 1266 $default reduce using rule 626 (return-type-requirement-opt) return-type-requirement go to state 1267 return-type-requirement-opt go to state 1268

State 1224

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 570 (postfix-expression)

State 1225

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 571 (postfix-expression)

State 1226

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 572 (postfix-expression)

State 1227

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 573 (postfix-expression)

State 1228

467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt $default reduce using rule 467 (new-expression)

State 1229

468 new-initializer"(" expression-list-opt ")" $default reduce using rule 468 (new-initializer)

State 1230

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1269

State 1231

495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt "]" shift, and go to state 1270

State 1232

387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement $default reduce using rule 387 (lambda-expression)

State 1233

376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement $default reduce using rule 376 (labeled-statement)

State 1234

171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" $default reduce using rule 171 (coroutine-return-statement)

State 1235

378 labeled-statementattribute-specifier-seq-opt "default" ":" statement $default reduce using rule 378 (labeled-statement)

State 1236

707 try-block"try" compound-statement handler-seq $default reduce using rule 707 (try-block)

State 1237

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1271 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1238

367 iteration-statement"while" "(" condition ")" statement ")" shift, and go to state 1272

State 1239

152 conditionexpression [";", ")"] 278 expressionexpression "," assignment-expression "," shift, and go to state 533 $default reduce using rule 152 (condition)

State 1240

368 iteration-statement"do" statement "while" "(" expression ")" ";" "(" shift, and go to state 1273

State 1241

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" IDENTIFIER shift, and go to state 122

State 1242

356 init-statementalias-declaration $default reduce using rule 356 (init-statement)

State 1243

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1108 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1244

354 init-statementexpression-statement $default reduce using rule 354 (init-statement)

State 1245

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 154 condition-opt %empty [";"] 155 | condition 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 358 init-statement-optinit-statement ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 "constexpr" reduce using rule 83 (attribute-specifier-seq-opt) "constexpr" [reduce using rule 358 (init-statement-opt)] "extern" reduce using rule 83 (attribute-specifier-seq-opt) "extern" [reduce using rule 358 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 358 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" reduce using rule 83 (attribute-specifier-seq-opt) "inline" [reduce using rule 358 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 358 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 358 (init-statement-opt)] "virtual" reduce using rule 83 (attribute-specifier-seq-opt) "virtual" [reduce using rule 358 (init-statement-opt)] ";" reduce using rule 154 (condition-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 358 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 358 (init-statement-opt)] "class" reduce using rule 83 (attribute-specifier-seq-opt) "class" [reduce using rule 358 (init-statement-opt)] "struct" reduce using rule 83 (attribute-specifier-seq-opt) "struct" [reduce using rule 358 (init-statement-opt)] "union" reduce using rule 83 (attribute-specifier-seq-opt) "union" [reduce using rule 358 (init-statement-opt)] "const" reduce using rule 83 (attribute-specifier-seq-opt) "const" [reduce using rule 358 (init-statement-opt)] "volatile" reduce using rule 83 (attribute-specifier-seq-opt) "volatile" [reduce using rule 358 (init-statement-opt)] "friend" reduce using rule 83 (attribute-specifier-seq-opt) "friend" [reduce using rule 358 (init-statement-opt)] "typedef" reduce using rule 83 (attribute-specifier-seq-opt) "typedef" [reduce using rule 358 (init-statement-opt)] "consteval" reduce using rule 83 (attribute-specifier-seq-opt) "consteval" [reduce using rule 358 (init-statement-opt)] "constinit" reduce using rule 83 (attribute-specifier-seq-opt) "constinit" [reduce using rule 358 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 358 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "enum" reduce using rule 83 (attribute-specifier-seq-opt) "enum" [reduce using rule 358 (init-statement-opt)] "explicit" reduce using rule 83 (attribute-specifier-seq-opt) "explicit" [reduce using rule 358 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 358 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 358 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 358 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 358 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 358 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 358 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 358 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 358 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 358 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 358 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 358 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 358 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 358 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 358 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 358 (init-statement-opt)] "static" reduce using rule 83 (attribute-specifier-seq-opt) "static" [reduce using rule 358 (init-statement-opt)] "thread_local" reduce using rule 83 (attribute-specifier-seq-opt) "thread_local" [reduce using rule 358 (init-statement-opt)] "mutable" reduce using rule 83 (attribute-specifier-seq-opt) "mutable" [reduce using rule 358 (init-statement-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1237 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1274 condition-opt go to state 1275 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1239 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1246

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 320 for-range-declaration attribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1276 for-range-declaration go to state 1277

State 1247

355 init-statementsimple-declaration $default reduce using rule 355 (init-statement)

State 1248

373 jump-statement"return" expr-or-braced-init-list-opt ";" $default reduce using rule 373 (jump-statement)

State 1249

375 jump-statement"goto" IDENTIFIER ";" $default reduce using rule 375 (jump-statement)

State 1250

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1278 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1251

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 354 init-statement expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "alignas", "(", "&", "[", "co_await", "class", "struct", "union", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 358 | init-statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 237 "inline" shift, and go to state 150 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 242 "-" shift, and go to state 243 "using" shift, and go to state 1241 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 248 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 357 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 357 (init-statement-opt)] "noexcept" [reduce using rule 357 (init-statement-opt)] "!" [reduce using rule 357 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 357 (init-statement-opt)] "this" [reduce using rule 357 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 357 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 357 (init-statement-opt)] "+" [reduce using rule 357 (init-statement-opt)] "-" [reduce using rule 357 (init-statement-opt)] ";" reduce using rule 282 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 357 (init-statement-opt)] "(" [reduce using rule 357 (init-statement-opt)] "&" [reduce using rule 357 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 357 (init-statement-opt)] "co_await" [reduce using rule 357 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 357 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 357 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 357 (init-statement-opt)] "operator" [reduce using rule 357 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 357 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 357 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 357 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 357 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 357 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "delete" [reduce using rule 357 (init-statement-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 357 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 357 (init-statement-opt)] "*" [reduce using rule 357 (init-statement-opt)] "requires" [reduce using rule 357 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "new" [reduce using rule 357 (init-statement-opt)] "~" [reduce using rule 357 (init-statement-opt)] "++" [reduce using rule 357 (init-statement-opt)] "--" [reduce using rule 357 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 357 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "dynamic_cast" [reduce using rule 357 (init-statement-opt)] "static_cast" [reduce using rule 357 (init-statement-opt)] "reinterpret_cast" [reduce using rule 357 (init-statement-opt)] "const_cast" [reduce using rule 357 (init-statement-opt)] "typeid" [reduce using rule 357 (init-statement-opt)] "literal" [reduce using rule 357 (init-statement-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 357 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 357 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 357 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 357 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 357 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 357 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 357 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 357 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 357 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 357 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 357 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 357 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 357 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 357 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 357 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 357 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 357 (init-statement-opt)] STRING_LITERAL [reduce using rule 357 (init-statement-opt)] "throw" [reduce using rule 357 (init-statement-opt)] "sizeof" [reduce using rule 357 (init-statement-opt)] "alignof" [reduce using rule 357 (init-statement-opt)] "co_yield" [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alias-declaration go to state 1242 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 1243 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1109 expression-opt go to state 1110 expression-statement go to state 1244 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 init-statement go to state 1253 init-statement-opt go to state 1279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-declaration go to state 1247 simple-template-id go to state 297 simple-type-specifier go to state 408 storage-class-specifier go to state 99 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 415 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1252

149 compound-statement "{" statement-seq-opt "}" 630 selection-statement"if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement "{" shift, and go to state 793 compound-statement go to state 1280

State 1253

358 init-statement-optinit-statement $default reduce using rule 358 (init-statement-opt)

State 1254

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 632 selection-statement"switch" "(" init-statement-opt condition ")" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1237 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1281 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1239 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1255

91 balanced-token"(" balanced-token-seq-opt ")" $default reduce using rule 91 (balanced-token)

State 1256

92 balanced-token"[" balanced-token-seq-opt "]" $default reduce using rule 92 (balanced-token)

State 1257

93 balanced-token"{" balanced-token-seq-opt "}" $default reduce using rule 93 (balanced-token)

State 1258

398 mem-initializermem-initializer-id "(" expression-list-opt ")" $default reduce using rule 398 (mem-initializer)

State 1259

403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt $default reduce using rule 403 (mem-initializer-list)

State 1260

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "typename", "alignas", "[", "class", "struct", "union", "const", "volatile", "decltype", "enum", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void"] 84 | attribute-specifier-seq 259 exception-declaration attribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 261 | "..." 335 handler"catch" "(" exception-declaration ")" compound-statement "..." shift, and go to state 1282 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1283 exception-declaration go to state 1284

State 1261

338 handler-seq-opthandler-seq $default reduce using rule 338 (handler-seq-opt)

State 1262

336 handler-seqhandler handler-seq-opt $default reduce using rule 336 (handler-seq)

State 1263

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 553 (parameters-and-qualifiers)] $default reduce using rule 553 (parameters-and-qualifiers) alignment-specifier go to state 165 attribute-specifier go to state 166

State 1264

418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt $default reduce using rule 418 (member-declarator)

State 1265

597 pure-specifier"=" '0' '0' shift, and go to state 1213

State 1266

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 625 return-type-requirement"->" type-constraint 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 simple-template-id go to state 96 template-name go to state 102 type-constraint go to state 1285 type-name go to state 106 typedef-name go to state 108

State 1267

627 return-type-requirement-optreturn-type-requirement $default reduce using rule 627 (return-type-requirement-opt)

State 1268

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" ";" shift, and go to state 1286

State 1269

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 494 (noptr-new-declarator)] $default reduce using rule 494 (noptr-new-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 1270

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1287

State 1271

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 1288 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1272

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 367 iteration-statement"while" "(" condition ")" statement 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1289 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1273

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 368 iteration-statement"do" statement "while" "(" expression ")" ";" 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1290 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1274

155 condition-optcondition $default reduce using rule 155 (condition-opt)

State 1275

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement ";" shift, and go to state 1291

State 1276

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1292 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1277

370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement ":" shift, and go to state 1293

State 1278

377 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement $default reduce using rule 377 (labeled-statement)

State 1279

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1237 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1294 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1239 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1280

630 selection-statement"if" NOT-opt "consteval" compound-statement ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "}", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "namespace", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 631 | "if" NOT-opt "consteval" compound-statement "else" statement "else" shift, and go to state 1295 "else" [reduce using rule 630 (selection-statement)] $default reduce using rule 630 (selection-statement)

State 1281

632 selection-statement"switch" "(" init-statement-opt condition ")" statement ")" shift, and go to state 1296

State 1282

261 exception-declaration"..." $default reduce using rule 261 (exception-declaration)

State 1283

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "alignas" shift, and go to state 157 "[" shift, and go to state 161 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 124 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-key go to state 405 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 413 type-specifier-seq go to state 1297 typedef-name go to state 108 typename-specifier go to state 109

State 1284

335 handler"catch" "(" exception-declaration ")" compound-statement ")" shift, and go to state 1298

State 1285

625 return-type-requirement"->" type-constraint $default reduce using rule 625 (return-type-requirement)

State 1286

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" $default reduce using rule 148 (compound-requirement)

State 1287

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "alignas" shift, and go to state 157 "[" shift, and go to state 161 "[" [reduce using rule 495 (noptr-new-declarator)] $default reduce using rule 495 (noptr-new-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166

State 1288

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer "=" shift, and go to state 377 "{" shift, and go to state 379 brace-or-equal-initializer go to state 1299 braced-init-list go to state 382

State 1289

367 iteration-statement"while" "(" condition ")" statement $default reduce using rule 367 (iteration-statement)

State 1290

278 expressionexpression "," assignment-expression 368 iteration-statement"do" statement "while" "(" expression ")" ";" "," shift, and go to state 533 ")" shift, and go to state 1300

State 1291

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [")"] 283 | expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1109 expression-opt go to state 1301 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1292

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty ["["] 605 | ref-qualifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 155 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 158 "&" shift, and go to state 1302 "&&" shift, and go to state 1303 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "[" reduce using rule 604 (ref-qualifier-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 1304 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 ref-qualifier go to state 340 ref-qualifier-opt go to state 1305 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1293

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 273 expr-or-braced-init-list expression 274 | braced-init-list 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 322 for-range-initializer expr-or-braced-init-list 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 237 "noexcept" shift, and go to state 238 "!" shift, and go to state 239 "::" shift, and go to state 240 "this" shift, and go to state 241 "typename" shift, and go to state 8 "+" shift, and go to state 242 "-" shift, and go to state 243 "(" shift, and go to state 244 "&" shift, and go to state 245 "[" shift, and go to state 246 "co_await" shift, and go to state 247 "{" shift, and go to state 379 "operator" shift, and go to state 248 "decltype" shift, and go to state 21 "*" shift, and go to state 249 "requires" shift, and go to state 250 "~" shift, and go to state 251 "++" shift, and go to state 252 "--" shift, and go to state 253 "dynamic_cast" shift, and go to state 254 "static_cast" shift, and go to state 255 "reinterpret_cast" shift, and go to state 256 "const_cast" shift, and go to state 257 "typeid" shift, and go to state 258 "literal" shift, and go to state 259 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 117 "throw" shift, and go to state 260 "sizeof" shift, and go to state 261 "alignof" shift, and go to state 262 "co_yield" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 braced-init-list go to state 1178 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expr-or-braced-init-list go to state 1306 expression go to state 1181 fold-expression go to state 277 for-range-initializer go to state 1307 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 string-literal go to state 299 template-id go to state 300 template-name go to state 102 throw-expression go to state 301 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 302 unary-expression go to state 303 unary-operator go to state 304 unqualified-id go to state 305 yield-expression go to state 306

State 1294

628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement ")" shift, and go to state 1308

State 1295

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 631 selection-statement"if" NOT-opt "consteval" compound-statement "else" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1309 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1296

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 632 selection-statement"switch" "(" init-statement-opt condition ")" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1310 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1297

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [")"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 915 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 916 "&" shift, and go to state 159 "&&" shift, and go to state 162 "decltype" shift, and go to state 21 "*" shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] ")" reduce using rule 32 (abstract-declarator-opt) "[" reduce using rule 485 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 abstract-declarator go to state 683 abstract-declarator-opt go to state 1311 abstract-pack-declarator go to state 685 class-name go to state 55 declarator go to state 1312 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 686 noptr-abstract-declarator-opt go to state 687 noptr-abstract-pack-declarator go to state 688 noptr-declarator go to state 172 ptr-abstract-declarator go to state 689 ptr-declarator go to state 173 ptr-operator go to state 919 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1298

149 compound-statement "{" statement-seq-opt "}" 335 handler"catch" "(" exception-declaration ")" compound-statement "{" shift, and go to state 793 compound-statement go to state 1313

State 1299

153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer $default reduce using rule 153 (condition)

State 1300

368 iteration-statement"do" statement "while" "(" expression ")" ";" ";" shift, and go to state 1314

State 1301

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement ")" shift, and go to state 1315

State 1302

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "alignas", "(", "&", "[", "&&", "operator", "decltype", "*", "~"] 84 | attribute-specifier-seq 594 ptr-operator"&" attribute-specifier-seq-opt 602 ref-qualifier"&" ["["] "[" reduce using rule 83 (attribute-specifier-seq-opt) "[" [reduce using rule 602 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 330

State 1303

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "alignas", "(", "&", "[", "&&", "operator", "decltype", "*", "~"] 84 | attribute-specifier-seq 595 ptr-operator"&&" attribute-specifier-seq-opt 603 ref-qualifier"&&" ["["] "[" reduce using rule 83 (attribute-specifier-seq-opt) "[" [reduce using rule 603 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 333

State 1304

320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator $default reduce using rule 320 (for-range-declaration)

State 1305

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" "[" shift, and go to state 1316

State 1306

322 for-range-initializerexpr-or-braced-init-list $default reduce using rule 322 (for-range-initializer)

State 1307

370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement ")" shift, and go to state 1317

State 1308

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1318 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1309

631 selection-statement"if" NOT-opt "consteval" compound-statement "else" statement $default reduce using rule 631 (selection-statement)

State 1310

632 selection-statement"switch" "(" init-statement-opt condition ")" statement $default reduce using rule 632 (selection-statement)

State 1311

260 exception-declarationattribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt $default reduce using rule 260 (exception-declaration)

State 1312

259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator $default reduce using rule 259 (exception-declaration)

State 1313

335 handler"catch" "(" exception-declaration ")" compound-statement $default reduce using rule 335 (handler)

State 1314

368 iteration-statement"do" statement "while" "(" expression ")" ";" $default reduce using rule 368 (iteration-statement)

State 1315

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1319 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1316

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 342 identifier-list IDENTIFIER 343 | identifier-list "," IDENTIFIER IDENTIFIER shift, and go to state 845 identifier-list go to state 1320

State 1317

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1321 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1318

628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "}", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "namespace", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement "else" shift, and go to state 1322 "else" [reduce using rule 628 (selection-statement)] $default reduce using rule 628 (selection-statement)

State 1319

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement $default reduce using rule 369 (iteration-statement)

State 1320

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 343 identifier-listidentifier-list "," IDENTIFIER "," shift, and go to state 1005 "]" shift, and go to state 1323

State 1321

370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement $default reduce using rule 370 (iteration-statement)

State 1322

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 629 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 149 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 150 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 971 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 972 attribute-specifier-seq-opt go to state 973 block-declaration go to state 974 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 975 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 976 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1324 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1323

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" $default reduce using rule 321 (for-range-declaration)

State 1324

629 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement $default reduce using rule 629 (selection-statement)